LYaPAS

Logical Language for the Representation of Synthesis Algorithms, or LYaPAS (ЛЯПАС), is a programming language that sprung out of 1964 Soviet Union. It is based on set-theoretical considerations oriented toward the programming of synthesis algorithms for finite-state and discrete devices. The language is self-extending and self-compiling with only a minimal translator written for the native machine environment.
Speciality keyboard mappings are highly recommended for entering in the many non-typical keyboard symbols found in the language.
Its use of octal numbers within the language specification is considered one of its interesting qualities.
LYaPAS-M is a further refinement of LYaPAS.
== Operators ==
=== l-operators ===
First-level operators in the language.
==== Basic Computational Operators ====
Symbol	Name 	Example
∨ 	Disjunction Operator 	01001101 ∨ 10011000 = 11011101
∧ 	Conjunction Operator 	01001101 ∧ 10011000 = 00001000
⊕ 	Exclusive Disjunction Operator 	01000110 ⊕ 10001100 = 11001010
+ 	Addition Operator—Modulo 2p 	01000110 + 10001100 = 11010010
- 	Subtraction Operator—Modulo 2p 	01000110 - 10001100 = 1011101
× 	Multiplication Operator—Modulo 2p 	01000110 × 10001100 = 01001000
×̅ 	Multiplication Operator with Round-Off	01000110 ×̄ 10001100 = 00100110
: 	Division Operator 	00001101:00000101 = 00000011 (remainder), я = 00000010 (integer part of quotient)
┐ 	Component-wise Inversion Operator 	01001101 ┐ = 10110010
ɪ 	Order Inversion Operator 	01001101 ɪ = 10110010
⊢ 	Leftmost 1 Position-Locating Operator 	00010110 ⊢ = 00000011By convention, 00000000 ⊢ = 10000000 ⊢ = 00000000
⇤ 	Normalization Operator 	00010110 ⇤ = 10110000, 00000000 ⇤ 00000000
< 	Left-Shift Operator 	01101010 < 00000100 = 10100000
> 	Right-Shift Operator 	01101010 > 00000101 = 00000011
← 	Cyclic-Shift Operator 	01101010 ← 00100100 = 10100110
▽ 	Weighting Operator 	01101010 ▽ = 00000100 (number of ones)
⊻ 	Reflection Operator 	(Requires a more in-depth explanation.)
==== Assignment Operators ====
Symbol	Name
⇒ 	Assignment Operator
⇔ 	Interchange Operator
⇐ 	Natural Assignment Operator
▵ 	Positive Element-Incrementation Operator
▵̅ 	Negative Element-Incrementation Operator
○ 	Null-Value-Assignment Operator
○̅ 	Maximum-Value-Assignment Operator
==== Implicit Variable τ ====
Implicit variable τ is a symbol that never appears in the program. The current value of τ is the result of the the realization of the current operator.
==== Control-Transfer Operators ====
Symbol	Name
→ 	Unconditional Transfer Operator
○→ 	Conditional Transfer-on-Zero Operator
↦ 	Conditional Transfer-on-One Operator
⇻ 	Exit Operator
! 	Return Operator
↓ 	Transfer-to-Machine-Language Operator
Ẋ 	Enumeration-of-Ones Operator
Ẍ 	Random-Enumeration-of-Ones Operator
==== Exchanging Information with External Medium Operators ====
Symbol	Name
* 	Print-One-Element Operator
⁑ 	Punch-One-Element Operator
↑ 	Input Operator
↗ 	Data-Transfer-to-External-Complex Operator
↙ 	Data-Transfer-from-External-Complex Operator
==== Other Operators ====
Symbol	Name
. 	End-of-Algorithm Operator
⇇ 	Unlimited-Shift Operator
=== L-operators ===
Second-level operators in the language.
== Example ==
genadj. Perform generalized adjunction (joining) of intervals of a set.
genadj ακ?, ßκ? /b, d/ (αß)
170 233 4 (αab)
○ a ⇒ bbα ⇒ dc0 ┐⇒ b
Test for generalized adjunction of intervals Ia and Ib, formation of the interval Id—the result of the generalized adjunction—and setting of tags:
 §1 △ a ⊕ d ○ → 4αa ⊕ αb∧ b ⇒ aßa ⊕ ßb ∧ a ⇒ a ⇤ ⊕ c0 ↦ 1αa ∨ αb ⊕ a ⇒ αd?ßα ∧ ßb ∨ a ∨ c0 ⇒ ßd?c0 ∨ αa ⇒ αac0 ∨ αb ⇒ αb ○ c ○ a
Test for presence of interval Id in Int:
 §2 αc ⊕ αd ⊕ b |→ 3ßc ⊕ ßd ∧ b ↦ 3c0 ∨ ßc ⇒ ßc ○̄ a
 §3 △ c ⊕ d ↦ 2a ↦ 1 △ d → 1
 §4 ○̄ a △ b ⊕ d ↦ 1d ⇒ bα ⇒ bß
==External resources==
* LYaPAS in the Encyclopedia of Programming Languages
* Library of Congress entry for LYaPAS: a programming language for logic and coding algorithms
Category:Before 1993