41 lines
731 B
Text
41 lines
731 B
Text
mutual
|
||
inductive Even : Nat → Prop
|
||
| base : Even 0
|
||
| step : Odd n → Even (n+1)
|
||
inductive Odd : Nat → Prop
|
||
| step : Even n → Odd (n+1)
|
||
end
|
||
termination_by' measure
|
||
|
||
mutual
|
||
def f (n : Nat) :=
|
||
if n == 0 then 0 else f (n / 2) + 1
|
||
termination_by' measure
|
||
end
|
||
|
||
def g' (n : Nat) :=
|
||
match n with
|
||
| 0 => 1
|
||
| n+1 => g' n * 3
|
||
termination_by'
|
||
h => measure
|
||
|
||
namespace Test
|
||
mutual
|
||
def f : Nat → α → α → α
|
||
| 0, a, b => a
|
||
| n+1, a, b => g n a b |>.1
|
||
|
||
def g : Nat → α → α → (α × α)
|
||
| 0, a, b => (a, b)
|
||
| n+1, a, b => (h n a b, a)
|
||
|
||
def h : Nat → α → α → α
|
||
| 0, a, b => b
|
||
| n+1, a, b => f n a b
|
||
end
|
||
termination_by'
|
||
f => measure
|
||
g => measure
|
||
|
||
end Test
|