46 lines
1.2 KiB
Text
46 lines
1.2 KiB
Text
|
Target program decision tree
|
||
|
Switch ({ var=AcRoot=t/86; dom=Int 0; }) =
|
||
|
Leaf=VConstant:3
|
||
|
Switch ({ var=AcRoot=t/86; dom=Tag 0; }) =
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int [-inf; 0] [2; +inf] v Tag _; }) =
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int [-inf; 1] [3; +inf] v Tag _; }) =
|
||
|
Leaf=VConstant:1, VConstant:0
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int 2; }) =
|
||
|
Leaf=VConstant:1, VConstant:2
|
||
|
Fallback=None
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int 1; }) =
|
||
|
Leaf=VConstant:1, VConstant:1
|
||
|
Fallback=None
|
||
|
Switch ({ var=AcRoot=t/86; dom=Tag 1; }) =
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int [-inf; -1] [1; +inf] v Tag _; }) =
|
||
|
Leaf=VConstant:2, VConstant:1
|
||
|
Switch ({ var=AcField(0 AcRoot=t/86); dom=Int 0; }) =
|
||
|
Leaf=VConstant:2, VConstant:0
|
||
|
Fallback=None
|
||
|
Fallback=None
|
||
|
|
||
|
Source program decision tree
|
||
|
Switch AcRoot:{
|
||
|
Variant K2 ->
|
||
|
Switch AcRoot.0:{
|
||
|
Bool false ->
|
||
|
Leaf='Int 2 Bool false '
|
||
|
|
||
|
Bool true ->
|
||
|
Leaf='Int 2 Bool true '
|
||
|
} Fallback: Unreachable
|
||
|
|
||
|
Variant K1 ->
|
||
|
Switch AcRoot.0:{
|
||
|
Int 2 ->
|
||
|
Leaf='Int 1 Int 2 '
|
||
|
|
||
|
Int 1 ->
|
||
|
Leaf='Int 1 Int 1 '
|
||
|
} Fallback: Leaf='Int 1 Unit '
|
||
|
|
||
|
Variant K3 ->
|
||
|
Leaf='Int 3 '
|
||
|
} Fallback: Unreachable
|
||
|
|
||
|
The two programs are equivalent.
|