Rational hitting lists: model #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/RationalHitting/Model.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical arguments are retained.
A noncommutative rational formula over n variables and rational constants.
- var
{n : ℕ}
: Fin n → Formula n
An input variable.
- const
{n : ℕ}
: ℚ → Formula n
A rational scalar.
- add
{n : ℕ}
: Formula n → Formula n → Formula n
Addition of two subformulas.
- mul
{n : ℕ}
: Formula n → Formula n → Formula n
Ordered multiplication of two subformulas.
- inv
{n : ℕ}
: Formula n → Formula n
Inversion, defined only when the evaluated operand is a unit.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.var a) (Complexity.RationalHitting.Formula.var b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.var a) (Complexity.RationalHitting.Formula.const a_1) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.var a) (a_1.add a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.var a) (a_1.mul a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.var a) a_1.inv = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.const a) (Complexity.RationalHitting.Formula.var a_1) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.const a) (Complexity.RationalHitting.Formula.const b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.const a) (a_1.add a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.const a) (a_1.mul a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (Complexity.RationalHitting.Formula.const a) a_1.inv = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.add a_1) (Complexity.RationalHitting.Formula.var a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.add a_1) (Complexity.RationalHitting.Formula.const a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.add a_1) (a_2.mul a_3) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.add a_1) a_2.inv = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.mul a_1) (Complexity.RationalHitting.Formula.var a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.mul a_1) (Complexity.RationalHitting.Formula.const a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.mul a_1) (a_2.add a_3) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq (a.mul a_1) a_2.inv = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq a.inv (Complexity.RationalHitting.Formula.var a_1) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq a.inv (Complexity.RationalHitting.Formula.const a_1) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq a.inv (a_1.add a_2) = isFalse ⋯
- Complexity.RationalHitting.instDecidableEqFormula.decEq a.inv (a_1.mul a_2) = isFalse ⋯
Instances For
Number of syntax-tree nodes, counting variables, constants, and operations.
Equations
Instances For
Evaluation in any rational algebra; a unary inverse requires an actual two-sided inverse of the evaluated operand, not a totalized inverse.
- var
{n : ℕ}
{R : Type u}
[Ring R]
{c : ℚ →+* R}
{X : Fin n → R}
(i : Fin n)
: Eval c X (Formula.var i) (X i)
A variable evaluates to its assigned value.
- const
{n : ℕ}
{R : Type u}
[Ring R]
{c : ℚ →+* R}
{X : Fin n → R}
(a : ℚ)
: Eval c X (Formula.const a) (c a)
A constant evaluates through the specified scalar homomorphism.
- add
{n : ℕ}
{R : Type u}
[Ring R]
{c : ℚ →+* R}
{X : Fin n → R}
{f g : Formula n}
{a b : R}
: Eval c X f a → Eval c X g b → Eval c X (f.add g) (a + b)
Defined summands give a defined sum.
- mul
{n : ℕ}
{R : Type u}
[Ring R]
{c : ℚ →+* R}
{X : Fin n → R}
{f g : Formula n}
{a b : R}
: Eval c X f a → Eval c X g b → Eval c X (f.mul g) (a * b)
Defined factors give a defined ordered product.
- inv
{n : ℕ}
{R : Type u}
[Ring R]
{c : ℚ →+* R}
{X : Fin n → R}
{f : Formula n}
{a b : R}
: Eval c X f a → a * b = 1 → b * a = 1 → Eval c X f.inv b
Both inverse identities are required at an inverse node.
Instances For
Square rational matrices of the specified dimension.
Instances For
A matrix substitution for every input variable.
Equations
Instances For
Defined evaluation on a rational matrix tuple.
Equations
Instances For
Some positive-dimensional rational matrix substitution is in the formula's domain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Some positive-dimensional rational matrix substitution has a defined nonzero value.
Equations
- One or more equations did not get rendered due to their size.
Instances For
All output tuples have one common positive dimension.
- dimension : ℕ
Common dimension of all matrix tuples.
Exclude the trivial zero-dimensional matrix ring.
The finite list of matrix substitutions, in output order.
Instances For
Little-endian unsigned binary, prefixed by a unary bit-length and a zero terminator. This is a self-delimiting binary encoding, including zero.
Equations
- Complexity.RationalHitting.encodeNat a = List.replicate (List.map (fun (b : ℕ) => b != 0) (Nat.digits 2 a)).length true ++ [false] ++ List.map (fun (b : ℕ) => b != 0) (Nat.digits 2 a)
Instances For
Sign bit, binary numerator magnitude, and positive binary denominator. Rat.num and Rat.den are the canonical reduced numerator and denominator.
Equations
Instances For
0 is blank, 1 and 2 are the two literal binary digits, 3 is work space. Fixed finite tape alphabet and finite state space; no advice or oracle.
Equations
Instances For
A finite-state Mathlib machine on the fixed four-symbol alphabet.
Equations
Instances For
Configuration of the corresponding Mathlib machine.
Equations
Instances For
Two unary parameters separated by one distinguished nonblank symbol.
Equations
- Complexity.RationalHitting.unaryInput n s = List.replicate n 2 ++ [1] ++ List.replicate s 2
Instances For
Exactly t ordinary deterministic TM0 transitions.
Equations
- Complexity.RationalHitting.run G 0 x✝ = some x✝
- Complexity.RationalHitting.run G t.succ x✝ = (Turing.TM0.step G x✝).bind (Complexity.RationalHitting.run G t)
Instances For
A fixed polynomial bound on bit time, full binary output length, and common positive dimension.
Equations
- One or more equations did not get rendered due to their size.