pytket.circuit.logic_exp¶
For more discussion of classical logic in pytket see the manual section.
Classes and functions for constructing logical expressions over Bit and BitRegister.
- class pytket.circuit.logic_exp.And[source]¶
- eval_vals() LogicExp | Bit | BitRegister | int [source]¶
Attempt to evaluate all sub-expressions; simple constant folding.
- class pytket.circuit.logic_exp.BitAnd(arg1: LogicExp | Bit | int, arg2: LogicExp | Bit | int)[source]¶
- class pytket.circuit.logic_exp.BitEq(arg1: LogicExp | Bit | int, arg2: LogicExp | Bit | int)[source]¶
- class pytket.circuit.logic_exp.BitLogicExp[source]¶
Expression acting only on Bit or Constant types.
- class pytket.circuit.logic_exp.BitNeq(arg1: LogicExp | Bit | int, arg2: LogicExp | Bit | int)[source]¶
- class pytket.circuit.logic_exp.BitOr(arg1: LogicExp | Bit | int, arg2: LogicExp | Bit | int)[source]¶
- eval_vals() LogicExp | Bit | BitRegister | int [source]¶
Attempt to evaluate all sub-expressions; simple constant folding.
- enum pytket.circuit.logic_exp.BitWiseOp(value)[source]¶
Enum for operations on Bit.
Valid values are as follows:
- AND = <BitWiseOp.AND: '&'>¶
- OR = <BitWiseOp.OR: '|'>¶
- XOR = <BitWiseOp.XOR: '^'>¶
- EQ = <BitWiseOp.EQ: '=='>¶
- NEQ = <BitWiseOp.NEQ: '!='>¶
- NOT = <BitWiseOp.NOT: '~'>¶
- ZERO = <BitWiseOp.ZERO: '0'>¶
- ONE = <BitWiseOp.ONE: '1'>¶
- class pytket.circuit.logic_exp.BitXor(arg1: LogicExp | Bit | int, arg2: LogicExp | Bit | int)[source]¶
- pytket.circuit.logic_exp.ConstPredicate¶
alias of
PredicateExp
- class pytket.circuit.logic_exp.LogicExp[source]¶
Logical expressions over Bit or BitRegister. Encoded as a tree of expressions
- all_inputs() Set[Bit | BitRegister] [source]¶
- Returns:
All variables involved in expression.
- Return type:
Set[Variable]
- all_inputs_ordered() list[Bit | BitRegister] [source]¶
- Returns:
All variables involved in expression, in order of first appearance.
- Return type:
list[Variable]
- eval_vals() LogicExp | Bit | BitRegister | int [source]¶
Attempt to evaluate all sub-expressions; simple constant folding.
- classmethod factory(op: BitWiseOp | RegWiseOp) Type[LogicExp] [source]¶
Return matching operation class for enum.
- classmethod from_dict(dic: Dict[str, Any]) LogicExp [source]¶
Load from JSON serializable nested dictionary.
- rename_args(cmap: Dict[Bit, Bit]) bool [source]¶
Rename the Bits according to a Bit map. Raise ValueError if a bit is being used in a register-wise expression.
- set_value(var: Bit | BitRegister, val: int) None [source]¶
Set value of var to val recursively.
- class pytket.circuit.logic_exp.NullaryOp[source]¶
Expression for operation on no arguments (i.e. constant).
- class pytket.circuit.logic_exp.PredicateExp[source]¶
A binary predicate where the arguments are either Bits, BitRegisters, or Constants.
- class pytket.circuit.logic_exp.RegAdd(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegAnd(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegDiv(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegEq(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegGeq(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegGt(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegLeq(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegLogicExp[source]¶
Expression acting only on BitRegister or Constant types.
- class pytket.circuit.logic_exp.RegLsh(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegLt(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegMul(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegNeg(arg1: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegNeq(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegNot(arg1: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegOr(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegPow(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegRsh(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- class pytket.circuit.logic_exp.RegSub(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- enum pytket.circuit.logic_exp.RegWiseOp(value)[source]¶
Enum for operations on BitRegister.
Valid values are as follows:
- AND = <RegWiseOp.AND: '&'>¶
- OR = <RegWiseOp.OR: '|'>¶
- XOR = <RegWiseOp.XOR: '^'>¶
- EQ = <RegWiseOp.EQ: '=='>¶
- NEQ = <RegWiseOp.NEQ: '!='>¶
- LT = <RegWiseOp.LT: '<'>¶
- GT = <RegWiseOp.GT: '>'>¶
- LEQ = <RegWiseOp.LEQ: '<='>¶
- GEQ = <RegWiseOp.GEQ: '>='>¶
- ADD = <RegWiseOp.ADD: '+'>¶
- SUB = <RegWiseOp.SUB: '-'>¶
- MUL = <RegWiseOp.MUL: '*'>¶
- DIV = <RegWiseOp.DIV: '/'>¶
- POW = <RegWiseOp.POW: '**'>¶
- LSH = <RegWiseOp.LSH: '<<'>¶
- RSH = <RegWiseOp.RSH: '>>'>¶
- NOT = <RegWiseOp.NOT: '~'>¶
- class pytket.circuit.logic_exp.RegXor(arg1: LogicExp | BitRegister | int, arg2: LogicExp | BitRegister | int)[source]¶
- pytket.circuit.logic_exp.filter_by_type(seq: Iterable, var_type: Type[T]) Iterator[Tuple[int, T]] [source]¶
Return enumeration of seq, with only elements of type var_type.
- pytket.circuit.logic_exp.if_bit(bit: Bit | BitLogicExp) PredicateExp [source]¶
Equivalent of
if bit:
.
- pytket.circuit.logic_exp.if_not_bit(bit: Bit | BitLogicExp) PredicateExp [source]¶
Equivalent of
if not bit:
.
- pytket.circuit.logic_exp.reg_eq(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister equality predicate, i.e. for a register
r
,(r == 5)
is expressed asreg_eq(r, 5)
- pytket.circuit.logic_exp.reg_geq(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister greater than or equal to predicate, i.e. for a register
r
,(r >= 5)
is expressed asreg_geq(r, 5)
- pytket.circuit.logic_exp.reg_gt(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister greater than predicate, i.e. for a register
r
,(r > 5)
is expressed asreg_gt(r, 5)
- pytket.circuit.logic_exp.reg_leq(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister less than or equal to predicate, i.e. for a register
r
,(r <= 5)
is expressed asreg_leq(r, 5)
- pytket.circuit.logic_exp.reg_lt(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister less than predicate, i.e. for a register
r
,(r < 5)
is expressed asreg_lt(r, 5)
- pytket.circuit.logic_exp.reg_neq(register: RegLogicExp | BitRegister, value: int) RegLogicExp [source]¶
Function to express a BitRegister inequality predicate, i.e. for a register
r
,(r != 5)
is expressed asreg_neq(r, 5)