Back to All Results
Input static SVG SVG Image
Input text prompt
<svg>...</svg>
The letter Y slides until it touches the left side of the letter E. Following that, the letter S moves to border E’s right side.

MoVer program
o_1 = iota(Object, lambda o: id(o, "letter-Y"))
o_2 = iota(Object, lambda o: id(o, "letter-E"))
o_3 = iota(Object, lambda o: id(o, "letter-S"))

m_1 = iota(Motion, lambda m: type(m, "translate") and post(m, s_left_border(o_1, o_2)) and agent(m, o_1))
m_2 = iota(Motion, lambda m: type(m, "translate") and post(m, s_right_border(o_3, o_2)) and agent(m, o_3))

t_before (m_1, m_2)
Initial animation without correction
Verification report
o_1 = iota(Object, lambda o: id(o, "letter-Y")): True
id: True

o_2 = iota(Object, lambda o: id(o, "letter-E")): True
id: True

o_3 = iota(Object, lambda o: id(o, "letter-S")): True
id: True

m_1 = iota(Motion, lambda m: type(m, "translate") and post(m, s_left_border(o_1, o_2)) and agent(m, o_1)): False
type: True
post: False
s_left_border: True
agent: True

m_2 = iota(Motion, lambda m: type(m, "translate") and post(m, s_right_border(o_3, o_2)) and agent(m, o_3)): True
type: True
post: True
s_right_border: True
agent: True

t_before(m_1, m_2): False
t_before: False

In this initial animation, the letter Y slides too much to the left. Although it did touch the left side of the letter E at one point, it did not stop there. Therefore m_1 is false. t_before(m_1, m_2) is false because m_1 is false.


Correction iteration 1
Verification report of correction iteration 1
o_1 = iota(Object, lambda o: id(o, "letter-Y")): True
id: True

o_2 = iota(Object, lambda o: id(o, "letter-E")): True
id: True

o_3 = iota(Object, lambda o: id(o, "letter-S")): True
id: True

m_1 = iota(Motion, lambda m: type(m, "translate") and post(m, s_left_border(o_1, o_2)) and agent(m, o_1)): True
type: True
post: True
s_left_border: True
agent: True

m_2 = iota(Motion, lambda m: type(m, "translate") and post(m, s_right_border(o_3, o_2)) and agent(m, o_3)): True
type: True
post: True
s_right_border: True
agent: True

t_before(m_1, m_2): False
t_before: False

In the first correction of the initial animation, the letter Y now slides and stops at touching the left side of the letter E. However, since m_1 and m_2 are not sequential, t_before(m_1, m_2) is still false.


Correction iteration 2
Verification report of correction iteration 2
o_1 = iota(Object, lambda o: id(o, "letter-Y")): True
id: True

o_2 = iota(Object, lambda o: id(o, "letter-E")): True
id: True

o_3 = iota(Object, lambda o: id(o, "letter-S")): True
id: True

m_1 = iota(Motion, lambda m: type(m, "translate") and post(m, s_left_border(o_1, o_2)) and agent(m, o_1)): True
type: True
post: True
s_left_border: True
agent: True

m_2 = iota(Motion, lambda m: type(m, "translate") and post(m, s_right_border(o_3, o_2)) and agent(m, o_3)): True
type: True
post: True
s_right_border: True
agent: True

t_before(m_1, m_2): True
t_before: True

In this last iteration, the timing of m_1 and m_2 has been corrected, so t_before(m_1, m_2) is now true. All the predicates are now true, so the animation correctly matches the prompt.