symbolic-pymc icon indicating copy to clipboard operation
symbolic-pymc copied to clipboard

Use "generic" meta types consistently

Open brandonwillard opened this issue 5 years ago • 0 comments

In some instances, we automatically create logic variables as stand-ins for unspecified meta object components (e.g. #35, TFlowMetaOp.outputs); following #84, we should always produce properly "typed" generic objects and we should also restrict meta object inputs to the expected "types" (whenever possible).

For example, TFlowMetaOp.outputs would ideally return something strictly unifiable with a tuple of TFlowMetaTensor objects. As well, we shouldn't allow a strictly logic variable argument for TFlowMetaOp.op_def, since it's possible to create a TFlowMetaOpDef object with strictly logic variable arguments—making it just as generic, but properly "typed" (i.e. will only unify with a TFlowMetaOpDef, but will unify with any TFlowMetaOpDef).

This change will probably need to come alongside an easy way to generate these generic meta types (e.g. a "generic" TFlowMetaOp requires a "generic" TFlowMetaOpDef).

Such a consistency would also simplify the code base quite a bit, since there are numerous places where isvar is used to check whether or not a property is available.

brandonwillard avatar Oct 30 '19 22:10 brandonwillard