Documentation
Projects
.
SK
.
Basic
Search
return to top
source
Imports
Init
Projects.SK.Defs
Imported by
SK
.
reduced_K
SK
.
reduced_S
SK
.
reduces_reduced_iff
SK
.
reduced_iff
SK
.
reduces_comb1_iff
SK
.
K1_reduces_iff
SK
.
S1_reduces_iff
SK
.
S2_reduces_iff
SK
.
reduced_K1
SK
.
reduced_S1
SK
.
reduced_S2
SK
.
reduced_I
SK
.
not_exprEq_iff
SK
.
not_exprNe_iff
SK
.
I_reduces
SK
.
reduced_KI
SK
.
KI_reduces
SK
.
KI_reduces'
SK
.
reduced_KK
SK
.
KK_reduces
SK
.
exprNe_KK_I
SK
.
exprNe_I_KI
SK
.
exprNe_KI_SKIK
SK
.
exprNe_KKI_SKI
SK
.
exprNe_K_KI
SK
.
exprNe_KI_K
SK
.
exprEq_of_ext
SK
.
exprNe_S_K
SK
.
ExprNe
.
symm
SK
.
ExprEq
.
symm
SK
.
ExprNe
.
comm
SK
.
ExprEq
.
comm
SK
.
exprEq_of_reduces'
source
@[simp]
instance
SK
.
reduced_K
:
Reduced
Expr.K
source
@[simp]
instance
SK
.
reduced_S
:
Reduced
Expr.S
source
@[simp]
theorem
SK
.
reduces_reduced_iff
{
a
b
:
Expr
}
[
ha
:
Reduced
a
]
:
Reduces
a
b
↔
a
=
b
source
theorem
SK
.
reduced_iff
{
a
:
Expr
}
:
Reduced
a
↔
∀ {
b
:
Expr
},
Reduces
a
b
→
a
=
b
source
theorem
SK
.
reduces_comb1_iff
{
c
a
b
:
Expr
}
(
hc
:
c
=
Expr.K
∨
c
=
Expr.S
)
:
Reduces
(
c
%%
a
)
b
↔
∃ (
a'
:
Expr
),
Reduces
a
a'
∧
c
%%
a'
=
b
source
theorem
SK
.
K1_reduces_iff
{
a
b
:
Expr
}
:
Reduces
(
Expr.K
%%
a
)
b
↔
∃ (
a'
:
Expr
),
Reduces
a
a'
∧
Expr.K
%%
a'
=
b
source
theorem
SK
.
S1_reduces_iff
{
a
b
:
Expr
}
:
Reduces
(
Expr.S
%%
a
)
b
↔
∃ (
a'
:
Expr
),
Reduces
a
a'
∧
Expr.S
%%
a'
=
b
source
theorem
SK
.
S2_reduces_iff
{
a
b
c
:
Expr
}
:
Reduces
(
Expr.S
%%
a
%%
b
)
c
↔
∃ (
a'
:
Expr
) (
b'
:
Expr
),
Reduces
a
a'
∧
Reduces
b
b'
∧
Expr.S
%%
a'
%%
b'
=
c
source
@[simp]
instance
SK
.
reduced_K1
{
a
:
Expr
}
[
ha
:
Reduced
a
]
:
Reduced
(
Expr.K
%%
a
)
source
@[simp]
instance
SK
.
reduced_S1
{
a
:
Expr
}
[
ha
:
Reduced
a
]
:
Reduced
(
Expr.S
%%
a
)
source
@[simp]
instance
SK
.
reduced_S2
{
a
b
:
Expr
}
[
ha
:
Reduced
a
]
[
hb
:
Reduced
b
]
:
Reduced
(
Expr.S
%%
a
%%
b
)
source
@[simp]
instance
SK
.
reduced_I
:
Reduced
I
source
@[simp]
theorem
SK
.
not_exprEq_iff
{
a
b
:
Expr
}
:
¬
ExprEq
a
b
↔
ExprNe
a
b
source
@[simp]
theorem
SK
.
not_exprNe_iff
{
a
b
:
Expr
}
:
¬
ExprNe
a
b
↔
ExprEq
a
b
source
@[simp]
theorem
SK
.
I_reduces
{
a
:
Expr
}
:
Reduces
(
I
%%
a
)
a
source
@[simp]
instance
SK
.
reduced_KI
:
Reduced
KI
source
@[simp]
theorem
SK
.
KI_reduces
{
a
:
Expr
}
:
Reduces
(
KI
%%
a
)
I
source
@[simp]
theorem
SK
.
KI_reduces'
{
a
b
:
Expr
}
:
Reduces
(
KI
%%
a
%%
b
)
b
source
@[simp]
instance
SK
.
reduced_KK
:
Reduced
KK
source
@[simp]
theorem
SK
.
KK_reduces
{
a
:
Expr
}
:
Reduces
(
KK
%%
a
)
Expr.K
source
@[simp]
theorem
SK
.
exprNe_KK_I
:
ExprNe
KK
I
source
@[simp]
theorem
SK
.
exprNe_I_KI
:
ExprNe
I
KI
source
@[simp]
theorem
SK
.
exprNe_KI_SKIK
:
ExprNe
KI
(
Expr.S
%%
KI
%%
Expr.K
)
source
@[simp]
theorem
SK
.
exprNe_KKI_SKI
:
ExprNe
(
Expr.K
%%
KI
) (
Expr.S
%%
KI
)
source
@[simp]
theorem
SK
.
exprNe_K_KI
:
ExprNe
Expr.K
KI
source
@[simp]
theorem
SK
.
exprNe_KI_K
:
ExprNe
KI
Expr.K
source
theorem
SK
.
exprEq_of_ext
{
f
g
:
Expr
}
(
h
:
∀ ⦃
x
:
Expr
⦄,
ExprEq
(
f
%%
x
) (
g
%%
x
)
)
:
ExprEq
f
g
source
@[simp]
theorem
SK
.
exprNe_S_K
:
ExprNe
Expr.S
Expr.K
source
theorem
SK
.
ExprNe
.
symm
{
a
b
:
Expr
}
(
h
:
ExprNe
a
b
)
:
ExprNe
b
a
source
theorem
SK
.
ExprEq
.
symm
{
a
b
:
Expr
}
(
h
:
ExprEq
a
b
)
:
ExprEq
b
a
source
theorem
SK
.
ExprNe
.
comm
{
a
b
:
Expr
}
:
ExprNe
a
b
↔
ExprNe
b
a
source
theorem
SK
.
ExprEq
.
comm
{
a
b
:
Expr
}
:
ExprEq
a
b
↔
ExprEq
b
a
source
theorem
SK
.
exprEq_of_reduces'
{
a
b
a'
b'
:
Expr
}
(
h₁
:
Reduces
a
a'
)
(
h₂
:
Reduces
b
b'
)
(
h₃
:
ExprEq
a
b
)
:
ExprEq
a'
b'