Computing Syntax in�Large Language Models
Week 7 Update�Thursday | July 9, 2026
Roadmap
2
Roadmap
3
Causal Abstraction
4
Causal Abstraction
5
Causal Abstraction
6
Causal Abstraction
7
Causal Abstraction
8
Causal Abstraction
9
High Level Causal Diagram (Addition)
10
High Level Causal Diagram (Addition)
11
High Level Causal Diagram (Addition)
12
High Level Causal Diagram (Addition)
13
High Level Causal Diagram (Addition)
14
Causal Mediation
15
Causal Mediation
16
Causal Mediation
17
Causal Mediation
18
Causal Mediation
19
Causal Mediation
20
Causal Mediation
21
Causal Mediation
22
Predicting the First Noun
23
Predicting the First Noun
24
Predicting the First Noun
25
Predicting the First Noun
26
Predicting the First Noun
27
Predicting the First Noun
28
Predicting the First Noun
29
Predicting the First Noun
30
Roadmap
31
Lit Review:: CausalGym
32
Lit Review:: CausalGym
33
Lit Review:: CausalGym
How detailed can patching be?
34
Roadmap
35
Lit Review:: Multilingual Representations
36
Roadmap
37
Lit Review:: Dyck-k,d
38
Roadmap
39
Motivating Causal Attention Architectures
40
Roadmap
41
Transformer Programming
42
RASP Language
Restricted Access Sequence Processing Language (2021)
43
RASP Intuition
44
Element Wise Ops
45
Element Wise Ops
46
Element Wise Ops
47
Element Wise Ops
48
Element Wise Ops
49
Element Wise Ops
50
Selection Ops
51
Selection Ops
52
Selection Ops
53
Selection Ops
54
Selection Ops
55
Selection Ops
56
Selection Ops
57
Selection Ops
58
Selection Ops
59
Selection Ops
60
Selection Ops
61
Selection Ops
62
Selection Ops
63
Selection Ops
64
Selection Ops
65
Selection Ops
66
Selection Ops
67
Selection Ops
68
Selection Ops
69
RASP Language
D-RASP
70
71
D-RASP Program for HI -> HF Translation
1. s1 = select(q=token, k=token, op=\circled{a}) # layer 0 head 0
2. s2 = select(q=pos, k=pos, op=\circled{b}) # layer 0 head 0
3. s3 = select(k=token, op=\circled{c})
4. s4 = select(k=pos, op=\circled{d})
5. a1 = aggregate(s=s1+s2+s3+s4, v=token) # layer 0 head 0
6. s5 = select(q=token, k=token, op=\circled{e}) # layer 0 head 1
7. s6 = select(q=pos, k=pos, op=\circled{f}) # layer 0 head 1
8. s7 = select(k=token, op=\circled{g})
9. a2 = aggregate(s=s5+s6+s7, v=token) # layer 0 head 1
10. a3 = aggregate(s=s5+s6+s7, v=pos) # layer 0 head 1
11. new_a1 = element_wise_op(a1) # layer 0 mlp
12. new_a2 = element_wise_op(a2) # layer 0 mlp
13. s8 = select(q=a1, k=a1, op=\circled{h}) # layer 1 head 0
14. s9 = select(q=a2, k=a1, op=\circled{i}) # layer 1 head 0
15. s10 = select(q=a2, k=token, op=\circled{j}) # layer 1 head 0
16. s11 = select(q=a2, k=new_a1, op=(q==k)) # layer 1 head 0
17. s12 = select(q=a2, k=new_a2, op=(q==k)) # layer 1 head 0
18. s13 = select(q=token, k=a1, op=\circled{k}) # layer 1 head 0
19. s14 = select(q=token, k=token, op=\circled{l}) # layer 1 head 0
20. s15 = select(q=token, k=new_a1, op=(uniform selection),
special_op=(k==q)) # layer 1 head 0
21. s16 = select(q=token, k=new_a2, op=(q==k)) # layer 1 head 0
22. s17 = select(q=pos, k=pos, op=\circled{n}) # layer 1 head 0
23. s18 = select(q=new_a1, k=a1, op=(q==k)) # layer 1 head 0
24. s19 = select(q=new_a1, k=token, op=(q==k)) # layer 1 head 0
25. s20 = select(q=new_a1, k=new_a1, op=(q==k)) # layer 1 head 0
26. s21 = select(q=new_a1, k=new_a2, op=(q==k)) # layer 1 head 0
27. s22 = select(q=new_a1, k=a3, op=(q==k)) # layer 1 head 0
28. s23 = select(q=new_a2, k=token, op=(q==k)) # layer 1 head 0
29. s24 = select(q=new_a2, k=new_a2, op=(q==k)) # layer 1 head 0
30. a4 = aggregate(s=s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19+s20+s21+s22+s23+s24, v=a1) # layer 1 head 0
31. a5 = aggregate(s=s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19+s20+s21+s22+s23+s24, v=a2) # layer 1 head 0
32. a6 = aggregate(s=s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19+s20+s21+s22+s23+s24, v=token) # layer 1 head 0
33. s25 = select(q=a1, k=a1, op=\circled{o}) # layer 1 head 1
34. s26 = select(q=a1, k=token, op=\circled{p}) # layer 1 head 1
35. s27 = select(q=a1, k=new_a1, op=(q==k)) # layer 1 head 1
36. s28 = select(q=a2, k=a1, op=\circled{q}) # layer 1 head 1
37. s29 = select(q=a2, k=a2, op=\circled{r}) # layer 1 head 1
38. s30 = select(q=a2, k=new_a1, op=(q==k)) # layer 1 head 1
39. s31 = select(q=a2, k=new_a2, op=(q==k)) # layer 1 head 1
40. s32 = select(q=token, k=a2, op=\circled{s}) # layer 1 head 1
41. s33 = select(q=token, k=token, op=\circled{t}) # layer 1 head 1
42. s34 = select(q=token, k=new_a1, op=(q==k)) # layer 1 head 1
43. s35 = select(q=token, k=new_a2, op=(q==k)) # layer 1 head 1
44. s36 = select(q=new_a1, k=a1, op=(q==k)) # layer 1 head 1
45. s37 = select(q=new_a1, k=new_a1, op=(q==k)) # layer 1 head 1
46. s38 = select(q=new_a1, k=new_a2, op=(q==k)) # layer 1 head 1
47. s39 = select(q=new_a1, k=a3, op=(q==k)) # layer 1 head 1
48. s40 = select(q=new_a2, k=token, op=(q==k)) # layer 1 head 1
49. s41 = select(q=new_a2, k=new_a1, op=(q==k)) # layer 1 head 1
50. a7 = aggregate(s=s25+s26+s27+s28+s29+s30+s31+s32+s33+s34+s35+s36+s37+s38+s39+s40+s41, v=token) # layer 1 head 1
51. a8 = aggregate(s=s25+s26+s27+s28+s29+s30+s31+s32+s33+s34+s35+s36+s37+s38+s39+s40+s41, v=a2) # layer 1 head 1
52. new_new_a1 = element_wise_op(new_a1) # layer 1 mlp
53. new_new_a2 = element_wise_op(new_a2) # layer 1 mlp
54. logits1 = project(inp=a4, op=\circled{u})
55. logits2 = project(inp=a5, op=\circled{v})
56. logits3 = project(inp=a6, op=\circled{w})
57. logits4 = project(inp=a7, op=\circled{x})
58. logits5 = project(inp=a8, op=\circled{y})
59. logits6 = project(inp=a1, op=\circled{z})
60. logits7 = project(inp=a4, op=\circled{{})
61. logits8 = project(inp=a5, op=\circled{|})
62. logits9 = project(inp=a6, op=\circled{}})
63. logits10 = project(inp=a7, op=\circled{~})
64. logits11 = project(inp=token, op=\circled{�})
65. logits12 = project(inp=new_new_a1, op=(inp==out))
66. logits13 = project(inp=new_new_a2, op=(inp==out))
67. prediction = softmax(logits1+
logits2+
logits3+
logits4+
logits5+
logits6+
logits7+
logits8+
logits9+
logits10+
logits11+
logits12+
logits13)
72
D-RASP Program for HI -> HF Translation
73
D-RASP Program for HI -> HF Translation
74
D-RASP Program for HI -> HF Translation
75
D-RASP Program for HI -> HF Translation
76
RASP Language
RASP-L
Results for HI -> HF Task
77
RASP-L HI -> HF Translation
78
Subtree Reversal as Addition (Displacement)
79
Subtree Reversal as Addition (Displacement)
80
Subtree Reversal as Addition (Displacement)
81
Subtree Reversal as Addition (Displacement)
82
Subtree Reversal as Addition (Displacement)
83
Subtree Reversal as Addition (Displacement)
84
Subtree Reversal as Addition (Displacement)
85
Subtree Reversal as Addition (Displacement)
86
Subtree Reversal as Addition (Displacement)
87
Subtree Reversal as Addition (Displacement)
88
Subtree Reversal as Addition (Displacement)
89
Subtree Reversal as Addition (Displacement)
90
Subtree Reversal as Addition (Displacement)
91
Subtree Reversal as Addition (Displacement)
92
Algorithm for Calculating Displacement
displace(the) = 0 because no flipping ancestors
displace(boy) = + |NPsing.comp| = +2
displace(that) = +|CP_rel.comp| - |NPsing.head| = 1-1 = 0
displace(swims) = -|CP_rel.head| - |NPsing.head| = 1-2 = -2
displace(dances) = 0 because no flipping ancestors
93
Evaluating RASP-L
94
Next Steps
95