# Butterfly Theorem
Let(A = [0,0], B = [x1,0], C = [x2,x3], O = [x4,x5], D = [x6,x7], 
    H = [x8,0], E = [x9,x10], F = [x11,x12]):
Butterfly := Theorem(
    [arbitrary(A,B,C), circumcenter(A,B,C,O), oncircle(A,B,C,D), 
     intersection(A,B,C,D,H), online(A,C,E),
     perpendicular(O,H,E,H), intersection(E,H,B,D,F)], 
    [midpoint(E,F,H)], [x4, x5, x7, x8, x9, x10, x11, x12] );
