Equations
- HeyLo.instToExprTy = { toExpr := HeyLo.instToExprTy.toExpr, toTypeExpr := Lean.Expr.const `HeyLo.Ty [] }
Equations
- HeyLo.instToExprTy.toExpr HeyLo.Ty.Bool = Lean.Expr.const `HeyLo.Ty.Bool []
- HeyLo.instToExprTy.toExpr HeyLo.Ty.Nat = Lean.Expr.const `HeyLo.Ty.Nat []
- HeyLo.instToExprTy.toExpr HeyLo.Ty.ENNReal = Lean.Expr.const `HeyLo.Ty.ENNReal []
Instances For
Equations
- HeyLo.instHashableTy = { hash := HeyLo.instHashableTy.hash }
Equations
Instances For
Equations
Instances For
Equations
- HeyLo.instInhabitedTy = { default := HeyLo.instInhabitedTy.default }
Equations
Instances For
Equations
Equations
Instances For
Equations
- HeyLo.instToExprYes.toExpr HeyLo.Yes.yes = Lean.Expr.const `HeyLo.Yes.yes []
Instances For
Equations
- HeyLo.instToExprYes = { toExpr := HeyLo.instToExprYes.toExpr, toTypeExpr := Lean.Expr.const `HeyLo.Yes [] }
Equations
Instances For
Equations
Equations
Instances For
Equations
- HeyLo.instInhabitedYes = { default := HeyLo.instInhabitedYes.default }
Equations
- HeyLo.instToExprNo = { toExpr := HeyLo.instToExprNo.toExpr, toTypeExpr := Lean.Expr.const `HeyLo.No [] }
Equations
- HeyLo.instHashableNo = { hash := HeyLo.instHashableNo.hash }
Equations
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
- Add
{α : Ty}
: α.Arith → BinOp α α
The
+operator (addition). - Sub
{α : Ty}
: α.Arith → BinOp α α
The
-operator (subtraction). - Mul
{α : Ty}
: α.Arith → BinOp α α
The
*operator (multiplication). - Div
{α : Ty}
: α.Arith → BinOp α α
The
/operator (division). - Mod : BinOp Ty.Nat Ty.Nat
The
%operator (modulo). - And : BinOp Ty.Bool Ty.Bool
The
&&operator (logical and). - Or : BinOp Ty.Bool Ty.Bool
The
||operator (logical or). - Eq
{α : Ty}
: BinOp α Ty.Bool
The
==operator (equality). - Lt
{α : Ty}
: α.Compare → BinOp α Ty.Bool
The
<operator (less than). - Le
{α : Ty}
: α.Compare → BinOp α Ty.Bool
The
<=operator (less than or equal to). - Ne
{α : Ty}
: α.Compare → BinOp α Ty.Bool
The
!=operator (not equal to). - Ge
{α : Ty}
: α.Compare → BinOp α Ty.Bool
The
>=operator (greater than or equal to). - Gt
{α : Ty}
: α.Compare → BinOp α Ty.Bool
The
>operator (greater than). - Inf : BinOp Ty.ENNReal Ty.ENNReal
The
⊓operator (infimum). - Sup : BinOp Ty.ENNReal Ty.ENNReal
The
⊔operator (supremum). - Impl : BinOp Ty.ENNReal Ty.ENNReal
The
→operator (implication). - CoImpl : BinOp Ty.ENNReal Ty.ENNReal
The
←operator (co-implication).
Instances For
Equations
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Add a_3) = ((Lean.Expr.const `HeyLo.BinOp.Add []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Sub a_3) = ((Lean.Expr.const `HeyLo.BinOp.Sub []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Mul a_3) = ((Lean.Expr.const `HeyLo.BinOp.Mul []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Div a_3) = ((Lean.Expr.const `HeyLo.BinOp.Div []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Mod = Lean.Expr.const `HeyLo.BinOp.Mod []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.And = Lean.Expr.const `HeyLo.BinOp.And []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Or = Lean.Expr.const `HeyLo.BinOp.Or []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Eq = (Lean.Expr.const `HeyLo.BinOp.Eq []).app (Lean.toExpr a✝)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Lt a_3) = ((Lean.Expr.const `HeyLo.BinOp.Lt []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Le a_3) = ((Lean.Expr.const `HeyLo.BinOp.Le []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Ne a_3) = ((Lean.Expr.const `HeyLo.BinOp.Ne []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Ge a_3) = ((Lean.Expr.const `HeyLo.BinOp.Ge []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr (HeyLo.BinOp.Gt a_3) = ((Lean.Expr.const `HeyLo.BinOp.Gt []).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Inf = Lean.Expr.const `HeyLo.BinOp.Inf []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Sup = Lean.Expr.const `HeyLo.BinOp.Sup []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.Impl = Lean.Expr.const `HeyLo.BinOp.Impl []
- HeyLo.instToExprBinOp.toExpr HeyLo.BinOp.CoImpl = Lean.Expr.const `HeyLo.BinOp.CoImpl []
Instances For
Equations
- HeyLo.instToExprBinOp = { toExpr := HeyLo.instToExprBinOp.toExpr, toTypeExpr := ((Lean.Expr.const `HeyLo.BinOp []).app (Lean.toExpr a✝¹)).app (Lean.toExpr a✝) }
- Not
{α : Ty}
: UnOp α α
The
!operator (negation). - Non : UnOp Ty.ENNReal Ty.ENNReal
The
~operator (dual of negation), - Embed : UnOp Ty.Bool Ty.ENNReal
Boolean embedding (maps true to top in the lattice).
- Iverson : UnOp Ty.Bool Ty.ENNReal
Iverson bracket (maps true to 1).
- NatToENNReal : UnOp Ty.Nat Ty.ENNReal
Cast Nat to ENNReal
Instances For
Equations
- HeyLo.instToExprUnOp = { toExpr := HeyLo.instToExprUnOp.toExpr, toTypeExpr := ((Lean.Expr.const `HeyLo.UnOp []).app (Lean.toExpr a✝¹)).app (Lean.toExpr a✝) }
Equations
- HeyLo.instToExprUnOp.toExpr HeyLo.UnOp.Not = (Lean.Expr.const `HeyLo.UnOp.Not []).app (Lean.toExpr a✝)
- HeyLo.instToExprUnOp.toExpr HeyLo.UnOp.Non = Lean.Expr.const `HeyLo.UnOp.Non []
- HeyLo.instToExprUnOp.toExpr HeyLo.UnOp.Embed = Lean.Expr.const `HeyLo.UnOp.Embed []
- HeyLo.instToExprUnOp.toExpr HeyLo.UnOp.Iverson = Lean.Expr.const `HeyLo.UnOp.Iverson []
- HeyLo.instToExprUnOp.toExpr HeyLo.UnOp.NatToENNReal = Lean.Expr.const `HeyLo.UnOp.NatToENNReal []
Instances For
Equations
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Not HeyLo.UnOp.Not = isTrue ⋯
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Not HeyLo.UnOp.Non = isFalse HeyLo.instDecidableEqUnOp.decEq._proof_2
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Non HeyLo.UnOp.Not = isFalse HeyLo.instDecidableEqUnOp.decEq._proof_3
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Non HeyLo.UnOp.Non = isTrue HeyLo.instDecidableEqUnOp.decEq._proof_4
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Embed HeyLo.UnOp.Embed = isTrue HeyLo.instDecidableEqUnOp.decEq._proof_5
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Embed HeyLo.UnOp.Iverson = isFalse HeyLo.instDecidableEqUnOp.decEq._proof_6
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Iverson HeyLo.UnOp.Embed = isFalse HeyLo.instDecidableEqUnOp.decEq._proof_7
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.Iverson HeyLo.UnOp.Iverson = isTrue HeyLo.instDecidableEqUnOp.decEq._proof_8
- HeyLo.instDecidableEqUnOp.decEq HeyLo.UnOp.NatToENNReal HeyLo.UnOp.NatToENNReal = isTrue HeyLo.instDecidableEqUnOp.decEq._proof_9
Instances For
- Inf : QuantOp Ty.ENNReal
The infimum of a set.
- Sup : QuantOp Ty.ENNReal
The supremum of a set.
- Forall : QuantOp Ty.Bool
Boolean forall (equivalent to
Infon the lattice of booleans). - Exists : QuantOp Ty.Bool
Boolean exists (equivalent to
Supon the lattice of booleans).
Instances For
Equations
- HeyLo.instToExprQuantOp = { toExpr := HeyLo.instToExprQuantOp.toExpr, toTypeExpr := (Lean.Expr.const `HeyLo.QuantOp []).app (Lean.toExpr a✝) }
Equations
- HeyLo.instToExprQuantOp.toExpr HeyLo.QuantOp.Inf = Lean.Expr.const `HeyLo.QuantOp.Inf []
- HeyLo.instToExprQuantOp.toExpr HeyLo.QuantOp.Sup = Lean.Expr.const `HeyLo.QuantOp.Sup []
- HeyLo.instToExprQuantOp.toExpr HeyLo.QuantOp.Forall = Lean.Expr.const `HeyLo.QuantOp.Forall []
- HeyLo.instToExprQuantOp.toExpr HeyLo.QuantOp.Exists = Lean.Expr.const `HeyLo.QuantOp.Exists []
Instances For
Equations
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Inf HeyLo.QuantOp.Inf = isTrue HeyLo.instDecidableEqQuantOp.decEq._proof_1
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Inf HeyLo.QuantOp.Sup = isFalse HeyLo.instDecidableEqQuantOp.decEq._proof_2
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Sup HeyLo.QuantOp.Inf = isFalse HeyLo.instDecidableEqQuantOp.decEq._proof_3
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Sup HeyLo.QuantOp.Sup = isTrue HeyLo.instDecidableEqQuantOp.decEq._proof_4
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Forall HeyLo.QuantOp.Forall = isTrue HeyLo.instDecidableEqQuantOp.decEq._proof_5
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Forall HeyLo.QuantOp.Exists = isFalse HeyLo.instDecidableEqQuantOp.decEq._proof_6
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Exists HeyLo.QuantOp.Forall = isFalse HeyLo.instDecidableEqQuantOp.decEq._proof_7
- HeyLo.instDecidableEqQuantOp.decEq HeyLo.QuantOp.Exists HeyLo.QuantOp.Exists = isTrue HeyLo.instDecidableEqQuantOp.decEq._proof_8
Instances For
Equations
- HeyLo.instToExprIdent.toExpr { name := a, type := a_1 } = ((Lean.Expr.const `HeyLo.Ident.mk []).app (Lean.toExpr a)).app (Lean.toExpr a_1)
Instances For
Equations
- HeyLo.instToExprIdent = { toExpr := HeyLo.instToExprIdent.toExpr, toTypeExpr := Lean.Expr.const `HeyLo.Ident [] }
Equations
Equations
- HeyLo.instInhabitedIdent = { default := HeyLo.instInhabitedIdent.default }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- HeyLo.instToExprRat_heyVL = { toExpr := fun (r : ℚ) => Lean.mkApp2 (Lean.Expr.const `mkRat []) (Lean.toExpr r.num) (Lean.toExpr r.den), toTypeExpr := Lean.Expr.const `Rat [] }
Equations
- One or more equations did not get rendered due to their size.
- UInt
{α : Ty}
(h : α.Arith)
: ℕ → Literal α
An unsigned integer literal (
123). - Frac : ℚ≥0 → Literal Ty.ENNReal
A number literal represented by a fraction.
- Infinity : Literal Ty.ENNReal
Infinity,
- Bool : _root_.Bool → Literal Ty.Bool
A boolean literal.
Instances For
Equations
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.UInt a_2 a_3) (HeyLo.Literal.UInt b b_1) = if h : a_2 = b then h ▸ if h : a_3 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.UInt h a_1) (HeyLo.Literal.Frac a_2) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.UInt h a_1) HeyLo.Literal.Infinity = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.UInt h a_1) (HeyLo.Literal.Bool a_2) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.Frac a_1) (HeyLo.Literal.UInt h a_2) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.Frac a_1) (HeyLo.Literal.Frac b) = if h : a_1 = b then h ▸ isTrue ⋯ else isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.Frac a_1) HeyLo.Literal.Infinity = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq HeyLo.Literal.Infinity (HeyLo.Literal.UInt h a_1) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq HeyLo.Literal.Infinity (HeyLo.Literal.Frac a_1) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq HeyLo.Literal.Infinity HeyLo.Literal.Infinity = isTrue HeyLo.instDecidableEqLiteral.decEq._proof_13
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.Bool a_1) (HeyLo.Literal.UInt h a_2) = isFalse ⋯
- HeyLo.instDecidableEqLiteral.decEq (HeyLo.Literal.Bool a_1) (HeyLo.Literal.Bool b) = if h : a_1 = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- HeyLo.instToExprLiteral.toExpr (HeyLo.Literal.UInt a_2 a_3) = (((Lean.Expr.const `HeyLo.Literal.UInt []).app (Lean.toExpr a✝)).app (Lean.toExpr a_2)).app (Lean.toExpr a_3)
- HeyLo.instToExprLiteral.toExpr (HeyLo.Literal.Frac a_1) = (Lean.Expr.const `HeyLo.Literal.Frac []).app (Lean.toExpr a_1)
- HeyLo.instToExprLiteral.toExpr HeyLo.Literal.Infinity = Lean.Expr.const `HeyLo.Literal.Infinity []
- HeyLo.instToExprLiteral.toExpr (HeyLo.Literal.Bool a_1) = (Lean.Expr.const `HeyLo.Literal.Bool []).app (Lean.toExpr a_1)
Instances For
Equations
- HeyLo.instToExprLiteral = { toExpr := HeyLo.instToExprLiteral.toExpr, toTypeExpr := (Lean.Expr.const `HeyLo.Literal []).app (Lean.toExpr a✝) }
Equations
Instances For
Equations
- HeyLo.instToExprFun.toExpr HeyLo.Fun.nfloor = Lean.Expr.const `HeyLo.Fun.nfloor []
- HeyLo.instToExprFun.toExpr HeyLo.Fun.nlog2 = Lean.Expr.const `HeyLo.Fun.nlog2 []
Instances For
Equations
- HeyLo.instToExprFun = { toExpr := HeyLo.instToExprFun.toExpr, toTypeExpr := ((Lean.Expr.const `HeyLo.Fun []).app (Lean.toExpr a✝¹)).app (Lean.toExpr a✝) }
- Call
{α β : Ty}
: Fun α β → HeyLo α → HeyLo β
A call to a procedure or function.
- Unary {α β : Ty} : UnOp α β → HeyLo α → HeyLo β
- Binary {α β : Ty} : BinOp α β → HeyLo α → HeyLo α → HeyLo β
- Var : String → (α : Ty) → HeyLo α
A variable.
- Ite
{α : Ty}
: HeyLo Ty.Bool → HeyLo α → HeyLo α → HeyLo α
Boolean if-then-else
- Quant
{α : Ty}
: QuantOp α → Ident → HeyLo α → HeyLo α
A quantifier over some variables.
- Subst
{α : Ty}
(v : Ident)
: HeyLo v.type → HeyLo α → HeyLo α
A substitution.
- Lit
{α : Ty}
: Literal α → HeyLo α
A value literal.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- instToExprHeyLo.toExpr (HeyLo.Call a_3 a_4) = ((((Lean.Expr.const `HeyLo.Call []).app (Lean.toExpr a_2)).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)).app (instToExprHeyLo.toExpr a_4)
- instToExprHeyLo.toExpr (HeyLo.Unary a_3 a_4) = ((((Lean.Expr.const `HeyLo.Unary []).app (Lean.toExpr a_2)).app (Lean.toExpr a✝)).app (Lean.toExpr a_3)).app (instToExprHeyLo.toExpr a_4)
- instToExprHeyLo.toExpr (HeyLo.Var a_2 a✝) = ((Lean.Expr.const `HeyLo.Var []).app (Lean.toExpr a_2)).app (Lean.toExpr a✝)
- instToExprHeyLo.toExpr (HeyLo.Quant a_2 a_3 a_4) = ((((Lean.Expr.const `HeyLo.Quant []).app (Lean.toExpr a✝)).app (Lean.toExpr a_2)).app (Lean.toExpr a_3)).app (instToExprHeyLo.toExpr a_4)
- instToExprHeyLo.toExpr (HeyLo.Lit a_2) = ((Lean.Expr.const `HeyLo.Lit []).app (Lean.toExpr a✝)).app (Lean.toExpr a_2)
Instances For
Equations
- instToExprHeyLo = { toExpr := instToExprHeyLo.toExpr, toTypeExpr := (Lean.Expr.const `HeyLo []).app (Lean.toExpr a✝) }
Equations
- One or more equations did not get rendered due to their size.
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Unary a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Binary a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Var a_3 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (a_3.Ite a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Quant a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Subst v a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Call a_1 a_2) (HeyLo.Lit a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Call a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Binary a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Var a_3 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (a_3.Ite a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Quant a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Subst v a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Unary a_1 a_2) (HeyLo.Lit a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Call a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Unary a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Var a_4 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (a_4.Ite a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Quant a_4 a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Subst v a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Binary a_1 a_2 a_3) (HeyLo.Lit a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Call a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Unary a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Binary a_2 a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_2 a✝) (HeyLo.Var b a✝) = if h : a_2 = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (a_2.Ite a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Quant a_2 a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Subst v a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Var a_1 a✝) (HeyLo.Lit a_2) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Call a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Unary a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Binary a_4 a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Var a_4 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Quant a_4 a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Subst v a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (a_1.Ite a_2 a_3) (HeyLo.Lit a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Call a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Unary a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Binary a_4 a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Var a_4 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (a_4.Ite a_5 a_6) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Subst v a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Quant a_1 a_2 a_3) (HeyLo.Lit a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Call a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Unary a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Binary a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Var a_3 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (a_3.Ite a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Quant a_3 a_4 a_5) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Subst v a_1 a_2) (HeyLo.Lit a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Call a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Unary a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Binary a_2 a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Var a_2 a✝) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (a_2.Ite a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Quant a_2 a_3 a_4) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_1) (HeyLo.Subst v a_2 a_3) = isFalse ⋯
- instDecidableEqHeyLo.decEq (HeyLo.Lit a_2) (HeyLo.Lit b) = if h : a_2 = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- HeyLo.term𝔼r = Lean.ParserDescr.node `HeyLo.term𝔼r 1024 (Lean.ParserDescr.symbol "𝔼r")
Instances For
Equations
- HeyLo.term𝔼b = Lean.ParserDescr.node `HeyLo.term𝔼b 1024 (Lean.ParserDescr.symbol "𝔼b")
Instances For
Equations
Equations
- HeyLo.instOfNat h = { ofNat := HeyLo.Lit (HeyLo.Literal.UInt h n) }
Equations
- HeyLo.instAdd h = { add := HeyLo.Binary (HeyLo.BinOp.Add h) }
Equations
- HeyLo.instSub h = { sub := HeyLo.Binary (HeyLo.BinOp.Sub h) }
Equations
- HeyLo.instMul h = { mul := HeyLo.Binary (HeyLo.BinOp.Mul h) }
Equations
- HeyLo.instDiv h = { div := HeyLo.Binary (HeyLo.BinOp.Div h) }
Equations
Equations
Equations
- instHImpHeyLoENNReal = { himp := HeyLo.Binary HeyLo.BinOp.Impl }
Equations
- instSDiffHeyLoENNReal = { sdiff := fun (a b : HeyLo HeyLo.Ty.ENNReal) => HeyLo.Binary HeyLo.BinOp.CoImpl b a }
Equations
- instHNotHeyLo = { hnot := HeyLo.Unary HeyLo.UnOp.Not }
Equations
- instComplHeyLoENNReal = { compl := HeyLo.Unary HeyLo.UnOp.Non }
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
- (HeyLo.Literal.UInt h_2 n).lit = ↑n
- (HeyLo.Literal.UInt h_2 n).lit = n
- (HeyLo.Literal.Frac n).lit = ↑n
- (HeyLo.Literal.Bool b).lit = (b = true)
- HeyLo.Literal.Infinity.lit = ⊤
Instances For
Equations
- (HeyLo.Literal.UInt h_2 n).sem = ↑n
- (HeyLo.Literal.UInt h_2 n).sem = ↑n
- (HeyLo.Literal.Frac n).sem = fun (x : pGCL.State HeyLo.Ty.Γ) => ↑n
- (HeyLo.Literal.Bool b).sem = fun (x : pGCL.State HeyLo.Ty.Γ) => b = true
- HeyLo.Literal.Infinity.sem = ⊤
Instances For
Equations
- HeyLo.BinOp.CoImpl.sem l_2 r_2 = r_2 \ l_2
- HeyLo.BinOp.Impl.sem l_2 r_2 = l_2 ⇨ r_2
- HeyLo.BinOp.Sup.sem l_2 r_2 = l_2 ⊔ r_2
- HeyLo.BinOp.Inf.sem l_2 r_2 = l_2 ⊓ r_2
- (HeyLo.BinOp.Gt h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => r_3 σ > l_3 σ
- (HeyLo.BinOp.Gt h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => r_3 σ > l_3 σ
- (HeyLo.BinOp.Ge h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≥ r_3 σ
- (HeyLo.BinOp.Ge h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≥ r_3 σ
- (HeyLo.BinOp.Ne h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≠ r_3 σ
- (HeyLo.BinOp.Ne h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≠ r_3 σ
- (HeyLo.BinOp.Le h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≤ r_3 σ
- (HeyLo.BinOp.Le h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ ≤ r_3 σ
- (HeyLo.BinOp.Lt h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ < r_3 σ
- (HeyLo.BinOp.Lt h_2).sem l_3 r_3 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_3 σ < r_3 σ
- HeyLo.BinOp.Eq.sem l r = fun (σ : pGCL.State HeyLo.Ty.Γ) => l σ = r σ
- HeyLo.BinOp.Or.sem l_2 r_2 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_2 σ ∨ r_2 σ
- HeyLo.BinOp.And.sem l_2 r_2 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_2 σ ∧ r_2 σ
- HeyLo.BinOp.Mod.sem l_2 r_2 = fun (σ : pGCL.State HeyLo.Ty.Γ) => l_2 σ % r_2 σ
- (HeyLo.BinOp.Div h_2).sem l_3 r_3 = l_3 / r_3
- (HeyLo.BinOp.Div h_2).sem l_3 r_3 = l_3 / r_3
- (HeyLo.BinOp.Mul h_2).sem l_3 r_3 = l_3 * r_3
- (HeyLo.BinOp.Mul h_2).sem l_3 r_3 = l_3 * r_3
- (HeyLo.BinOp.Sub h_2).sem l_3 r_3 = l_3 - r_3
- (HeyLo.BinOp.Sub h_2).sem l_3 r_3 = l_3 - r_3
- (HeyLo.BinOp.Add h_2).sem l_3 r_3 = l_3 + r_3
- (HeyLo.BinOp.Add h_2).sem l_3 r_3 = l_3 + r_3
Instances For
Equations
- HeyLo.UnOp.Not.sem x_3 = ¬x_3
- HeyLo.UnOp.Not.sem x_3 = ¬x_3
- HeyLo.UnOp.Not.sem x_3 = x_3
- HeyLo.UnOp.Non.sem x_2 = ~ x_2
- HeyLo.UnOp.Iverson.sem x_2 = i[x_2]
- HeyLo.UnOp.Embed.sem x_2 = i[x_2] * ⊤
- HeyLo.UnOp.NatToENNReal.sem x_2 = fun (x : pGCL.State HeyLo.Ty.Γ) => ↑(x_2 x)
Instances For
Equations
- HeyLo.QuantOp.Inf.sem x m_2 = ⨅ (v : x.type.lit), m_2[x ↦ fun (x : pGCL.State HeyLo.Ty.Γ) => v]
- HeyLo.QuantOp.Sup.sem x m_2 = ⨆ (v : x.type.lit), m_2[x ↦ fun (x : pGCL.State HeyLo.Ty.Γ) => v]
- HeyLo.QuantOp.Forall.sem x m_2 = ⨅ (v : x.type.lit), m_2[x ↦ fun (x : pGCL.State HeyLo.Ty.Γ) => v]
- HeyLo.QuantOp.Exists.sem x m_2 = ⨆ (v : x.type.lit), m_2[x ↦ fun (x : pGCL.State HeyLo.Ty.Γ) => v]
Instances For
Equations
- HeyLo.Fun.nfloor.sem m_2 = fun (σ : pGCL.State HeyLo.Ty.Γ) => ⌊ENNReal.toReal (m_2 σ)⌋.toNat
- HeyLo.Fun.nlog2.sem m_2 = fun (σ : pGCL.State HeyLo.Ty.Γ) => Nat.log2 (m_2 σ)
Instances For
Equations
- (HeyLo.Binary op l r).sem = op.sem l.sem r.sem
- (HeyLo.Lit l).sem = l.sem
- (HeyLo.Subst x v m).sem = m.sem[x ↦ v.sem]
- (HeyLo.Quant op x m).sem = op.sem x m.sem
- (HeyLo.Call f x).sem = f.sem x.sem
- (b.Ite l_2 r_2).sem = fun (σ : pGCL.State HeyLo.Ty.Γ) => if b.sem σ then l_2.sem σ else r_2.sem σ
- (b.Ite l_2 r_2).sem = i[b.sem] * l_2.sem + i[¬b.sem] * r_2.sem
- (b.Ite l_2 r_2).sem = fun (σ : pGCL.State HeyLo.Ty.Γ) => if b.sem σ then l_2.sem σ else r_2.sem σ
- (HeyLo.Var x α).sem = fun (σ : pGCL.State HeyLo.Ty.Γ) => σ { name := x, type := α }
- (HeyLo.Unary op m).sem = op.sem m.sem
Instances For
Equations
- (HeyLo.Binary op l r).performSubstWith x v = HeyLo.Binary op (l.performSubstWith x v) (r.performSubstWith x v)
- (HeyLo.Lit l).performSubstWith x v = HeyLo.Lit l
- (HeyLo.Subst x_1 v_1 m).performSubstWith x v = HeyLo.Subst x v (HeyLo.Subst x_1 v_1 m)
- (HeyLo.Quant op x_1 m).performSubstWith x v = HeyLo.Subst x v (HeyLo.Quant op x_1 m)
- (HeyLo.Call f x_1).performSubstWith x v = HeyLo.Call f (x_1.performSubstWith x v)
- (b.Ite l r).performSubstWith x v = (b.performSubstWith x v).Ite (l.performSubstWith x v) (r.performSubstWith x v)
- (HeyLo.Var x_1 α).performSubstWith x v = if h : x.name = x_1 ∧ x.type = α then v.castTy ⋯ else HeyLo.Var x_1 α
- (HeyLo.Unary op m).performSubstWith x v = HeyLo.Unary op (m.performSubstWith x v)
Instances For
Equations
- (HeyLo.Binary op l r).performSubst = HeyLo.Binary op l.performSubst r.performSubst
- (HeyLo.Lit l).performSubst = HeyLo.Lit l
- (HeyLo.Subst x v m).performSubst = m.performSubst.performSubstWith x v
- (HeyLo.Quant op x m).performSubst = HeyLo.Quant op x m.performSubst
- (HeyLo.Call f x).performSubst = HeyLo.Call f x.performSubst
- (b.Ite l r).performSubst = b.performSubst.Ite l.performSubst r.performSubst
- (HeyLo.Var x α).performSubst = HeyLo.Var x α
- (HeyLo.Unary op m).performSubst = HeyLo.Unary op m.performSubst
Instances For
Equations
- (HeyLo.Unary HeyLo.UnOp.Not (HeyLo.Lit (HeyLo.Literal.Bool b))).opt = HeyLo.Lit (HeyLo.Literal.Bool (decide ¬b = true))
- (HeyLo.Unary HeyLo.UnOp.Embed (HeyLo.Lit (HeyLo.Literal.Bool true))).opt = HeyLo.Lit (HeyLo.Literal.Frac 1)
- (HeyLo.Unary HeyLo.UnOp.Embed (HeyLo.Lit (HeyLo.Literal.Bool false))).opt = HeyLo.Lit (HeyLo.Literal.Frac 0)
- (HeyLo.Binary op l r).opt = HeyLo.Binary op l.opt r.opt
- (HeyLo.Lit l).opt = HeyLo.Lit l
- (HeyLo.Subst x_1 v m).opt = HeyLo.Subst x_1 v.opt m.opt
- (HeyLo.Quant op x_1 m).opt = HeyLo.Quant op x_1 m.opt
- (HeyLo.Call f x_1).opt = HeyLo.Call f x_1.opt
- (b.Ite l r).opt = b.opt.Ite l.opt r.opt
- (HeyLo.Var x_1 α).opt = HeyLo.Var x_1 α
- (HeyLo.Unary op m).opt = HeyLo.Unary op m.opt
Instances For
- values : Array (HeyLo Ty.ENNReal × HeyLo α)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instToExprDistribution = { toExpr := fun (μ : HeyLo.Distribution α) => Lean.toExpr μ.values, toTypeExpr := Lean.Expr.const `HeyLo.Distribution [] }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- HeyLo.Distribution.unif vs h = { values := Array.map (fun (v : HeyLo α) => (HeyLo.Binary (HeyLo.BinOp.Div HeyLo.Yes.yes) 1 (OfNat.ofNat vs.size), v)) vs, prop := ⋯ }