@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
- ISAR.instDecidableEqLTerm.decEq (ISAR.LTerm.var a) (ISAR.LTerm.var b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq (ISAR.LTerm.var a) a_1.abs = isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq (ISAR.LTerm.var a) (a_1.app a_2) = isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq a.abs (ISAR.LTerm.var a_1) = isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq a.abs b.abs = if h : a = b then h ▸ have inst := ISAR.instDecidableEqLTerm.decEq a a; isTrue ⋯ else isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq a.abs (a_1.app a_2) = isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq (a.app a_1) (ISAR.LTerm.var a_2) = isFalse ⋯
- ISAR.instDecidableEqLTerm.decEq (a.app a_1) a_2.abs = isFalse ⋯
Instances For
@[implicit_reducible]
Equations
- ISAR.instReprLTerm = { reprPrec := ISAR.instReprLTerm.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ISAR.shift d c (ISAR.LTerm.var a) = if a < c then ISAR.LTerm.var a else ISAR.LTerm.var (a + d)
- ISAR.shift d c a.abs = (ISAR.shift d (c + 1) a).abs
- ISAR.shift d c (a.app a_1) = (ISAR.shift d c a).app (ISAR.shift d c a_1)
Instances For
Equations
- ISAR.subst s c (ISAR.LTerm.var a) = if a < c then ISAR.LTerm.var a else if a = c then ISAR.shift c 0 s else ISAR.LTerm.var (a - 1)
- ISAR.subst s c a.abs = (ISAR.subst s (c + 1) a).abs
- ISAR.subst s c (a.app a_1) = (ISAR.subst s c a).app (ISAR.subst s c a_1)
Instances For
@[reducible, inline]
Equations
Instances For
Equations
- ISAR.occurs0 (ISAR.ITerm.var 0) = true
- ISAR.occurs0 (ISAR.ITerm.var a) = false
- ISAR.occurs0 ISAR.ITerm.norm = false
- ISAR.occurs0 ISAR.ITerm.konst = false
- ISAR.occurs0 ISAR.ITerm.dup = false
- ISAR.occurs0 ISAR.ITerm.swap = false
- ISAR.occurs0 ISAR.ITerm.comp = false
- ISAR.occurs0 ISAR.ITerm.sₛ = false
- ISAR.occurs0 (f · x_1) = (ISAR.occurs0 f || ISAR.occurs0 x_1)
Instances For
Equations
- ISAR.shift_down (ISAR.ITerm.var 0) = ISAR.ITerm.var 0
- ISAR.shift_down (ISAR.ITerm.var a) = ISAR.ITerm.var (a - 1)
- ISAR.shift_down ISAR.ITerm.norm = ISAR.ITerm.norm
- ISAR.shift_down ISAR.ITerm.konst = ISAR.ITerm.konst
- ISAR.shift_down ISAR.ITerm.dup = ISAR.ITerm.dup
- ISAR.shift_down ISAR.ITerm.swap = ISAR.ITerm.swap
- ISAR.shift_down ISAR.ITerm.comp = ISAR.ITerm.comp
- ISAR.shift_down ISAR.ITerm.sₛ = ISAR.ITerm.sₛ
- ISAR.shift_down (f · x_1) = ISAR.shift_down f · ISAR.shift_down x_1
Instances For
Equations
- ISAR.shift_isar d c (ISAR.ITerm.var n) = if n < c then ISAR.ITerm.var n else ISAR.ITerm.var (n + d)
- ISAR.shift_isar d c ISAR.ITerm.norm = ISAR.ITerm.norm
- ISAR.shift_isar d c ISAR.ITerm.konst = ISAR.ITerm.konst
- ISAR.shift_isar d c ISAR.ITerm.dup = ISAR.ITerm.dup
- ISAR.shift_isar d c ISAR.ITerm.swap = ISAR.ITerm.swap
- ISAR.shift_isar d c ISAR.ITerm.comp = ISAR.ITerm.comp
- ISAR.shift_isar d c ISAR.ITerm.sₛ = ISAR.ITerm.sₛ
- ISAR.shift_isar d c (f · x_1) = ISAR.shift_isar d c f · ISAR.shift_isar d c x_1
Instances For
Equations
- One or more equations did not get rendered due to their size.
- ISAR.abstract0 (ISAR.ITerm.var 0) = match ISAR.occurs0 (ISAR.ITerm.var 0) with | false => ISAR.ITerm.konst · ISAR.shift_down (ISAR.ITerm.var 0) | true => ISAR.ITerm.norm
- ISAR.abstract0 t = match ISAR.occurs0 t with | false => ISAR.ITerm.konst · ISAR.shift_down t | true => ISAR.ITerm.norm
Instances For
Equations
- ISAR.subst_isar x (ISAR.ITerm.var 0) = x
- ISAR.subst_isar x (ISAR.ITerm.var a) = ISAR.ITerm.var (a - 1)
- ISAR.subst_isar x ISAR.ITerm.norm = ISAR.ITerm.norm
- ISAR.subst_isar x ISAR.ITerm.konst = ISAR.ITerm.konst
- ISAR.subst_isar x ISAR.ITerm.dup = ISAR.ITerm.dup
- ISAR.subst_isar x ISAR.ITerm.swap = ISAR.ITerm.swap
- ISAR.subst_isar x ISAR.ITerm.comp = ISAR.ITerm.comp
- ISAR.subst_isar x ISAR.ITerm.sₛ = ISAR.ITerm.sₛ
- ISAR.subst_isar x (f · x_2) = ISAR.subst_isar x f · ISAR.subst_isar x x_2
Instances For
Equations
- ISAR.subst_isar_at c x (ISAR.ITerm.var n) = if n < c then ISAR.ITerm.var n else if n = c then x else ISAR.ITerm.var (n - 1)
- ISAR.subst_isar_at c x ISAR.ITerm.norm = ISAR.ITerm.norm
- ISAR.subst_isar_at c x ISAR.ITerm.konst = ISAR.ITerm.konst
- ISAR.subst_isar_at c x ISAR.ITerm.dup = ISAR.ITerm.dup
- ISAR.subst_isar_at c x ISAR.ITerm.swap = ISAR.ITerm.swap
- ISAR.subst_isar_at c x ISAR.ITerm.comp = ISAR.ITerm.comp
- ISAR.subst_isar_at c x ISAR.ITerm.sₛ = ISAR.ITerm.sₛ
- ISAR.subst_isar_at c x (f · x_2) = ISAR.subst_isar_at c x f · ISAR.subst_isar_at c x x_2
Instances For
Equations
- ISAR.compile (ISAR.LTerm.var n) = ISAR.ITerm.var n
- ISAR.compile (f.app x_1) = ISAR.compile f · ISAR.compile x_1
- ISAR.compile body.abs = ISAR.abstract0 (ISAR.compile body)
Instances For
theorem
ISAR.shift_down_subst_isar_special
(c : Nat)
(s u : ITerm)
(hu : occurs0 u = false)
:
shift_down (subst_isar_at (c + 1) (shift_isar 1 c (shift_isar c 0 s)) u) = subst_isar_at c (shift_isar c 0 s) (shift_down u)
theorem
ISAR.abstract0_subst_isar_special
(c : Nat)
(s u : ITerm)
:
abstract0 (subst_isar_at (c + 1) (shift_isar 1 c (shift_isar c 0 s)) u) = subst_isar_at c (shift_isar c 0 s) (abstract0 u)