pub struct QuantumLLMConfig {
pub transformer_config: QuantumTransformerConfig,
pub vocab_size: usize,
pub max_context_length: usize,
pub quantum_memory_layers: usize,
pub reasoning_config: QuantumReasoningConfig,
pub memory_config: QuantumMemoryConfig,
pub model_scale: ModelScale,
pub training_config: QLLMTrainingConfig,
}Expand description
Quantum Large Language Model configuration
Fields§
§transformer_config: QuantumTransformerConfigBase transformer configuration
vocab_size: usizeVocabulary size
max_context_length: usizeMaximum context length
quantum_memory_layers: usizeNumber of quantum memory layers
reasoning_config: QuantumReasoningConfigQuantum reasoning module configuration
memory_config: QuantumMemoryConfigQuantum memory configuration
model_scale: ModelScaleModel scale
training_config: QLLMTrainingConfigTraining configuration
Implementations§
Source§impl QuantumLLMConfig
impl QuantumLLMConfig
Sourcepub fn small(vocab_size: usize) -> Self
pub fn small(vocab_size: usize) -> Self
Create small model configuration
Examples found in repository?
examples/quantum_llm.rs (line 58)
52fn model_configurations_demo() -> Result<()> {
53 println!(" Creating quantum LLM configurations...");
54
55 let vocab_size = 50000;
56
57 // Small model for edge deployment
58 let small_config = QuantumLLMConfig::small(vocab_size);
59 println!(" Small Model Configuration:");
60 println!(" - Vocabulary size: {}", small_config.vocab_size);
61 println!(
62 " - Model dimension: {}",
63 small_config.transformer_config.model_dim
64 );
65 println!(
66 " - Number of heads: {}",
67 small_config.transformer_config.num_heads
68 );
69 println!(
70 " - Number of layers: {}",
71 small_config.transformer_config.num_layers
72 );
73 println!(
74 " - Quantum qubits: {}",
75 small_config.transformer_config.num_qubits
76 );
77 println!(" - Memory layers: {}", small_config.quantum_memory_layers);
78
79 let small_model = QuantumLLM::new(small_config)?;
80 println!(
81 " Small model parameters: {:.1}M",
82 small_model.num_parameters() as f64 / 1_000_000.0
83 );
84
85 // Medium model for general use
86 let medium_config = QuantumLLMConfig::medium(vocab_size);
87 println!("\n Medium Model Configuration:");
88 println!(
89 " - Model dimension: {}",
90 medium_config.transformer_config.model_dim
91 );
92 println!(
93 " - Number of layers: {}",
94 medium_config.transformer_config.num_layers
95 );
96 println!(
97 " - Quantum qubits: {}",
98 medium_config.transformer_config.num_qubits
99 );
100 println!(
101 " - Max context length: {}",
102 medium_config.max_context_length
103 );
104
105 let medium_model = QuantumLLM::new(medium_config)?;
106 println!(
107 " Medium model parameters: {:.1}M",
108 medium_model.num_parameters() as f64 / 1_000_000.0
109 );
110
111 // Large model for research and advanced applications
112 let large_config = QuantumLLMConfig::large(vocab_size);
113 println!("\n Large Model Configuration:");
114 println!(
115 " - Model dimension: {}",
116 large_config.transformer_config.model_dim
117 );
118 println!(
119 " - Number of layers: {}",
120 large_config.transformer_config.num_layers
121 );
122 println!(
123 " - Quantum qubits: {}",
124 large_config.transformer_config.num_qubits
125 );
126 println!(
127 " - Max context length: {}",
128 large_config.max_context_length
129 );
130 println!(
131 " - Reasoning steps: {}",
132 large_config.reasoning_config.reasoning_steps
133 );
134
135 let large_model = QuantumLLM::new(large_config)?;
136 println!(
137 " Large model parameters: {:.1}B",
138 large_model.num_parameters() as f64 / 1_000_000_000.0
139 );
140
141 // Compare quantum vs classical parameter efficiency
142 println!("\n Quantum Efficiency Analysis:");
143 let quantum_efficiency =
144 calculate_quantum_efficiency(&small_model, &medium_model, &large_model)?;
145 println!(
146 " - Quantum parameter efficiency: {:.2}x classical equivalent",
147 quantum_efficiency
148 );
149
150 Ok(())
151}
152
153/// Demonstrate quantum memory systems
154fn quantum_memory_demo() -> Result<()> {
155 println!(" Testing quantum memory systems...");
156
157 // Test different memory configurations
158 let memory_configs = vec![
159 ("Basic Associative", QuantumMemoryConfig::default()),
160 ("Enhanced Memory", QuantumMemoryConfig::enhanced()),
161 ("Advanced Holographic", QuantumMemoryConfig::advanced()),
162 ];
163
164 for (name, config) in memory_configs {
165 println!("\n --- {} Memory ---", name);
166
167 let mut memory_system = QuantumMemorySystem::new(config.clone())?;
168 println!(" Memory configuration:");
169 println!(" - Memory size: {}", config.memory_size);
170 println!(" - Associative memory: {}", config.associative_memory);
171 println!(" - Episodic memory: {}", config.episodic_memory);
172 println!(" - Retrieval mechanism: {:?}", config.retrieval_mechanism);
173 println!(" - Quantum compression: {}", config.quantum_compression);
174
175 // Test memory storage and retrieval
176 let test_embeddings = Array3::from_shape_fn((2, 10, 128), |(b, s, d)| {
177 0.1 * (b as f64 + s as f64 * 0.1 + d as f64 * 0.01)
178 });
179
180 // Enhance embeddings with memory
181 let enhanced = memory_system.enhance_embeddings(&test_embeddings)?;
182 println!(" Enhanced embeddings shape: {:?}", enhanced.dim());
183
184 // Measure memory enhancement effect
185 let original_variance = test_embeddings.var(0.0);
186 let enhanced_variance = enhanced.var(0.0);
187 let enhancement_factor = enhanced_variance / original_variance;
188
189 println!(" Memory enhancement factor: {:.3}", enhancement_factor);
190
191 // Test memory update
192 let input_ids = Array2::from_shape_fn((2, 10), |(b, s)| (b * 10 + s) % 1000);
193 memory_system.update_memory(&enhanced, &input_ids)?;
194
195 println!(" Memory updated with new experiences");
196
197 // Test memory retrieval patterns
198 test_memory_patterns(&memory_system, &config)?;
199 }
200
201 Ok(())
202}
203
204/// Demonstrate quantum reasoning capabilities
205fn quantum_reasoning_demo() -> Result<()> {
206 println!(" Testing quantum reasoning modules...");
207
208 let reasoning_configs = vec![
209 ("Basic Logical", QuantumReasoningConfig::default()),
210 ("Enhanced Causal", QuantumReasoningConfig::enhanced()),
211 ("Advanced Analogical", QuantumReasoningConfig::advanced()),
212 ];
213
214 for (name, config) in reasoning_configs {
215 println!("\n --- {} Reasoning ---", name);
216
217 let mut reasoning_module = QuantumReasoningModule::new(config.clone())?;
218
219 println!(" Reasoning capabilities:");
220 println!(" - Logical reasoning: {}", config.logical_reasoning);
221 println!(" - Causal reasoning: {}", config.causal_reasoning);
222 println!(" - Analogical reasoning: {}", config.analogical_reasoning);
223 println!(" - Reasoning steps: {}", config.reasoning_steps);
224 println!(" - Circuit depth: {}", config.circuit_depth);
225 println!(
226 " - Entanglement strength: {:.2}",
227 config.entanglement_strength
228 );
229
230 // Test reasoning on sample hidden states
231 let hidden_states = Array3::from_shape_fn((2, 8, 256), |(b, s, d)| {
232 // Create patterns that require reasoning
233 let logical_pattern = if s % 2 == 0 { 0.8 } else { 0.2 };
234 let causal_pattern = s as f64 * 0.1;
235 let base_value = logical_pattern + causal_pattern;
236
237 base_value + 0.05 * (b as f64 + d as f64 * 0.001)
238 });
239
240 println!(" Input hidden states shape: {:?}", hidden_states.dim());
241
242 // Apply quantum reasoning
243 let reasoned_output = reasoning_module.apply_reasoning(&hidden_states)?;
244 println!(" Reasoned output shape: {:?}", reasoned_output.dim());
245
246 // Analyze reasoning effects
247 let reasoning_enhancement =
248 analyze_reasoning_enhancement(&hidden_states, &reasoned_output)?;
249 println!(" Reasoning enhancement metrics:");
250 println!(
251 " - Pattern amplification: {:.3}",
252 reasoning_enhancement.pattern_amplification
253 );
254 println!(
255 " - Logical consistency: {:.3}",
256 reasoning_enhancement.logical_consistency
257 );
258 println!(
259 " - Causal coherence: {:.3}",
260 reasoning_enhancement.causal_coherence
261 );
262
263 // Test quantum coherence during reasoning
264 let coherence = reasoning_module.measure_coherence()?;
265 println!(" Quantum coherence: {:.3}", coherence);
266
267 // Test token selection enhancement
268 let sample_logits = Array1::from_shape_fn(1000, |i| {
269 0.01 * (i as f64 * 0.1).sin() + 0.001 * fastrand::f64()
270 });
271
272 let enhanced_logits = reasoning_module.enhance_token_selection(&sample_logits)?;
273 let enhancement_effect = (&enhanced_logits - &sample_logits)
274 .mapv(|x| x.abs())
275 .mean()
276 .unwrap_or(0.0);
277 println!(" Token selection enhancement: {:.4}", enhancement_effect);
278 }
279
280 Ok(())
281}
282
283/// Demonstrate quantum-enhanced text generation
284fn text_generation_demo() -> Result<()> {
285 println!(" Testing quantum-enhanced text generation...");
286
287 let config = QuantumLLMConfig::small(10000);
288 let mut model = QuantumLLM::new(config)?;
289
290 // Test different generation configurations
291 let generation_configs = vec![
292 ("Default", GenerationConfig::default()),
293 ("Creative", GenerationConfig::creative()),
294 ("Precise", GenerationConfig::precise()),
295 ];
296
297 let test_prompts = vec![
298 "The quantum computer",
299 "Artificial intelligence will",
300 "In the future, quantum computing",
301 "The relationship between quantum mechanics and consciousness",
302 ];
303
304 for (config_name, gen_config) in generation_configs {
305 println!("\n --- {} Generation ---", config_name);
306 println!(" Configuration:");
307 println!(" - Max length: {}", gen_config.max_length);
308 println!(" - Temperature: {:.1}", gen_config.temperature);
309 println!(" - Top-k: {:?}", gen_config.top_k);
310 println!(" - Top-p: {:?}", gen_config.top_p);
311 println!(
312 " - Quantum reasoning: {}",
313 gen_config.use_quantum_reasoning
314 );
315 println!(" - Memory usage: {}", gen_config.use_memory);
316 println!(" - Chain-of-thought: {}", gen_config.chain_of_thought);
317
318 for (i, prompt) in test_prompts.iter().take(2).enumerate() {
319 println!("\n Prompt {}: \"{}\"", i + 1, prompt);
320
321 let start_time = std::time::Instant::now();
322 let generated = model.generate(prompt, gen_config.clone())?;
323 let generation_time = start_time.elapsed();
324
325 // Display partial generated text (first 100 chars)
326 let display_text = if generated.len() > 100 {
327 format!("{}...", &generated[..100])
328 } else {
329 generated.clone()
330 };
331
332 println!(" Generated: \"{}\"", display_text);
333 println!(" Generation time: {:.2?}", generation_time);
334
335 // Analyze generation quality
336 let quality = analyze_generation_quality(&generated, &gen_config)?;
337 println!(" Quality metrics:");
338 println!(" - Fluency: {:.2}", quality.fluency);
339 println!(" - Coherence: {:.2}", quality.coherence);
340 println!(" - Novelty: {:.2}", quality.novelty);
341 println!(" - Quantum advantage: {:.3}", quality.quantum_advantage);
342 }
343 }
344
345 // Display generation statistics
346 let stats = model.generation_stats();
347 println!("\n Generation Statistics:");
348 println!(" - Total tokens generated: {}", stats.total_tokens);
349 println!(" - Quantum coherence: {:.3}", stats.quantum_coherence);
350 println!(" - Reasoning steps taken: {}", stats.reasoning_steps);
351 println!(" - Memory retrievals: {}", stats.memory_retrievals);
352
353 Ok(())
354}
355
356/// Demonstrate language understanding capabilities
357fn language_understanding_demo() -> Result<()> {
358 println!(" Testing quantum language understanding...");
359
360 let config = QuantumLLMConfig::medium(20000);
361 let mut model = QuantumLLM::new(config)?;
362
363 // Test different understanding tasks
364 let understanding_tasks = vec![
365 ("Reading Comprehension", vec![
366 "The photon exhibits wave-particle duality in quantum mechanics.",
367 "What properties does a photon exhibit according to quantum mechanics?",
368 ]),
369 ("Logical Reasoning", vec![
370 "If all quantum states are normalized, and psi is a quantum state, then what can we conclude?",
371 "Apply logical reasoning to derive the conclusion.",
372 ]),
373 ("Causal Understanding", vec![
374 "When a quantum measurement is performed, the wavefunction collapses.",
375 "What causes the wavefunction to collapse?",
376 ]),
377 ("Analogical Reasoning", vec![
378 "Quantum superposition is like a coin spinning in the air before landing.",
379 "How is quantum entanglement similar to this analogy?",
380 ]),
381 ];
382
383 for (task_name, texts) in understanding_tasks {
384 println!("\n --- {} Task ---", task_name);
385
386 for (i, text) in texts.iter().enumerate() {
387 println!(" Input {}: \"{}\"", i + 1, text);
388
389 // Process text through model
390 let input_ids = Array2::from_shape_vec((1, 10), vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0])?;
391
392 // Enable different reasoning modes based on task
393 let use_reasoning = match task_name {
394 "Logical Reasoning" => true,
395 "Causal Understanding" => true,
396 "Analogical Reasoning" => true,
397 _ => false,
398 };
399
400 let use_memory = true;
401
402 let output = model.forward(&input_ids, None, use_memory, use_reasoning)?;
403 println!(" Model output shape: {:?}", output.dim());
404
405 // Analyze understanding quality
406 let understanding_score = evaluate_understanding_quality(&output, task_name)?;
407 println!(" Understanding score: {:.3}", understanding_score);
408 }
409
410 // Task-specific analysis
411 match task_name {
412 "Reading Comprehension" => {
413 println!(" ✓ Model shows information extraction capabilities");
414 }
415 "Logical Reasoning" => {
416 println!(" ✓ Quantum logical circuits enhance deductive reasoning");
417 }
418 "Causal Understanding" => {
419 println!(" ✓ Causal reasoning networks identify cause-effect relationships");
420 }
421 "Analogical Reasoning" => {
422 println!(" ✓ Quantum analogy engine maps structural similarities");
423 }
424 _ => {}
425 }
426 }
427
428 Ok(())
429}
430
431/// Demonstrate chain-of-thought reasoning
432fn chain_of_thought_demo() -> Result<()> {
433 println!(" Testing quantum chain-of-thought reasoning...");
434
435 let config = QuantumLLMConfig::large(30000);
436 let mut model = QuantumLLM::new(config)?;
437
438 let reasoning_problems = vec![
439 ("Mathematical Problem",
440 "If a quantum computer can factor a 2048-bit number in polynomial time, how does this compare to classical computers?"),
441 ("Physics Problem",
442 "Explain how quantum entanglement enables quantum teleportation step by step."),
443 ("Logic Problem",
444 "If quantum measurements are probabilistic, how can quantum algorithms be deterministic?"),
445 ("Ethics Problem",
446 "What are the implications of quantum computing for cryptography and privacy?"),
447 ];
448
449 for (problem_type, prompt) in reasoning_problems {
450 println!("\n --- {} ---", problem_type);
451 println!(" Problem: \"{}\"", prompt);
452
453 // Enable chain-of-thought generation
454 let cot_config = GenerationConfig {
455 max_length: 200,
456 temperature: 0.8,
457 top_k: Some(40),
458 top_p: Some(0.9),
459 repetition_penalty: 1.1,
460 use_quantum_reasoning: true,
461 use_memory: true,
462 chain_of_thought: true,
463 };
464
465 let start_time = std::time::Instant::now();
466 let reasoning_output = model.generate(prompt, cot_config)?;
467 let reasoning_time = start_time.elapsed();
468
469 // Display reasoning steps (truncated for readability)
470 let display_output = if reasoning_output.len() > 200 {
471 format!("{}...", &reasoning_output[..200])
472 } else {
473 reasoning_output.clone()
474 };
475
476 println!(" Chain-of-thought reasoning:");
477 println!(" \"{}\"", display_output);
478 println!(" Reasoning time: {:.2?}", reasoning_time);
479
480 // Analyze reasoning quality
481 let reasoning_analysis = analyze_cot_quality(&reasoning_output)?;
482 println!(" Reasoning analysis:");
483 println!(" - Logical steps: {}", reasoning_analysis.logical_steps);
484 println!(" - Coherence score: {:.3}", reasoning_analysis.coherence);
485 println!(" - Depth of reasoning: {:.3}", reasoning_analysis.depth);
486 println!(
487 " - Quantum enhancement: {:.3}",
488 reasoning_analysis.quantum_enhancement
489 );
490
491 // Check for quantum reasoning patterns
492 if reasoning_analysis.quantum_enhancement > 0.5 {
493 println!(" ✓ Strong quantum reasoning signature detected");
494 } else if reasoning_analysis.quantum_enhancement > 0.2 {
495 println!(" ~ Moderate quantum reasoning influence");
496 } else {
497 println!(" - Limited quantum reasoning detected");
498 }
499 }
500
501 Ok(())
502}
503
504/// Demonstrate multi-modal quantum language processing
505fn multimodal_demo() -> Result<()> {
506 println!(" Testing multi-modal quantum language processing...");
507
508 let config = QuantumLLMConfig::medium(25000);
509 let mut model = QuantumLLM::new(config)?;
510
511 // Simulate different modalities
512 let multimodal_tasks = vec![
513 (
514 "Text + Quantum Data",
515 "Analyze this quantum measurement sequence",
516 ),
517 (
518 "Text + Mathematical",
519 "Solve this quantum mechanics equation",
520 ),
521 ("Text + Logical", "Apply quantum logic to this proposition"),
522 (
523 "Text + Memory",
524 "Recall information about quantum algorithms",
525 ),
526 ];
527
528 for (modality, task_description) in multimodal_tasks {
529 println!("\n --- {} Processing ---", modality);
530 println!(" Task: \"{}\"", task_description);
531
532 // Create synthetic multi-modal input
533 let text_input =
534 Array2::from_shape_vec((1, 8), vec![100, 200, 300, 400, 500, 600, 700, 800])?;
535
536 // Enable all quantum capabilities for multi-modal processing
537 let output = model.forward(&text_input, None, true, true)?;
538
539 println!(" Multi-modal output shape: {:?}", output.dim());
540
541 // Analyze multi-modal integration
542 let integration_quality = evaluate_multimodal_integration(&output, modality)?;
543 println!(" Integration metrics:");
544 println!(
545 " - Cross-modal coherence: {:.3}",
546 integration_quality.coherence
547 );
548 println!(
549 " - Information fusion: {:.3}",
550 integration_quality.fusion_quality
551 );
552 println!(
553 " - Quantum entanglement: {:.3}",
554 integration_quality.quantum_entanglement
555 );
556
557 // Test specific capabilities based on modality
558 match modality {
559 "Text + Quantum Data" => {
560 let quantum_analysis = analyze_quantum_data_processing(&output)?;
561 println!(
562 " - Quantum state recognition: {:.3}",
563 quantum_analysis.state_recognition
564 );
565 println!(
566 " - Measurement prediction: {:.3}",
567 quantum_analysis.measurement_prediction
568 );
569 }
570 "Text + Mathematical" => {
571 let math_analysis = analyze_mathematical_reasoning(&output)?;
572 println!(
573 " - Equation understanding: {:.3}",
574 math_analysis.equation_understanding
575 );
576 println!(
577 " - Symbol manipulation: {:.3}",
578 math_analysis.symbol_manipulation
579 );
580 }
581 "Text + Logical" => {
582 let logic_analysis = analyze_logical_processing(&output)?;
583 println!(" - Logical validity: {:.3}", logic_analysis.validity);
584 println!(
585 " - Inference quality: {:.3}",
586 logic_analysis.inference_quality
587 );
588 }
589 "Text + Memory" => {
590 let memory_analysis = analyze_memory_retrieval(&output)?;
591 println!(" - Memory accuracy: {:.3}", memory_analysis.accuracy);
592 println!(
593 " - Retrieval efficiency: {:.3}",
594 memory_analysis.efficiency
595 );
596 }
597 _ => {}
598 }
599 }
600
601 Ok(())
602}
603
604/// Demonstrate performance analysis and quantum advantage
605fn performance_analysis_demo() -> Result<()> {
606 println!(" Analyzing performance and quantum advantage...");
607
608 // Create models of different scales
609 let small_config = QuantumLLMConfig::small(10000);
610 let medium_config = QuantumLLMConfig::medium(20000);
611 let large_config = QuantumLLMConfig::large(50000);
612
613 let small_model = QuantumLLM::new(small_config)?;
614 let medium_model = QuantumLLM::new(medium_config)?;
615 let large_model = QuantumLLM::new(large_config)?;
616
617 let models = vec![
618 ("Small", &small_model),
619 ("Medium", &medium_model),
620 ("Large", &large_model),
621 ];
622
623 println!("\n Model Comparison:");
624
625 for (name, model) in &models {
626 let config = model.config();
627 let params = model.num_parameters();
628
629 println!(" {} Model:", name);
630 println!(" - Parameters: {:.1}M", params as f64 / 1_000_000.0);
631 println!(
632 " - Model dimension: {}",
633 config.transformer_config.model_dim
634 );
635 println!(
636 " - Quantum qubits: {}",
637 config.transformer_config.num_qubits
638 );
639 println!(" - Memory size: {}", config.memory_config.memory_size);
640 println!(
641 " - Reasoning steps: {}",
642 config.reasoning_config.reasoning_steps
643 );
644
645 // Estimate quantum advantage
646 let quantum_advantage = estimate_quantum_advantage(model)?;
647 println!(" - Quantum advantage: {:.2}x", quantum_advantage.speedup);
648 println!(
649 " - Memory efficiency: {:.2}x",
650 quantum_advantage.memory_efficiency
651 );
652 println!(
653 " - Reasoning enhancement: {:.2}x",
654 quantum_advantage.reasoning_enhancement
655 );
656 }
657
658 // Performance benchmarks
659 println!("\n Performance Benchmarks:");
660
661 let benchmark_tasks: Vec<(&str, fn(&QuantumLLM) -> Result<PerformanceMetrics>)> = vec![
662 ("Text Generation", measure_generation_performance),
663 ("Language Understanding", measure_understanding_performance),
664 ("Reasoning Tasks", measure_reasoning_performance),
665 ("Memory Operations", measure_memory_performance),
666 ];
667
668 for (task_name, benchmark_fn) in benchmark_tasks {
669 println!("\n {} Benchmark:", task_name);
670
671 for (model_name, model) in &models {
672 let performance = benchmark_fn(model)?;
673 println!(
674 " {} Model: {:.2} ops/sec, {:.1} MB memory",
675 model_name, performance.operations_per_sec, performance.memory_usage_mb
676 );
677 }
678 }
679
680 // Quantum scaling analysis
681 println!("\n Quantum Scaling Analysis:");
682 let scaling_analysis = analyze_quantum_scaling(&models)?;
683 println!(
684 " - Parameter scaling: {:.2} (vs {:.2} classical)",
685 scaling_analysis.quantum_scaling, scaling_analysis.classical_scaling
686 );
687 println!(
688 " - Performance scaling: {:.2}",
689 scaling_analysis.performance_scaling
690 );
691 println!(
692 " - Quantum efficiency: {:.1}%",
693 scaling_analysis.efficiency * 100.0
694 );
695
696 // Future projections
697 println!("\n Future Projections:");
698 println!(
699 " - 100B parameter QLLM estimated efficiency: {:.2}x classical",
700 project_future_efficiency(100_000_000_000)
701 );
702 println!(
703 " - Quantum coherence preservation: {:.1}%",
704 project_coherence_preservation() * 100.0
705 );
706 println!(
707 " - Reasoning capability enhancement: {:.2}x",
708 project_reasoning_enhancement()
709 );
710
711 Ok(())
712}Sourcepub fn medium(vocab_size: usize) -> Self
pub fn medium(vocab_size: usize) -> Self
Create medium model configuration
Examples found in repository?
examples/quantum_llm.rs (line 86)
52fn model_configurations_demo() -> Result<()> {
53 println!(" Creating quantum LLM configurations...");
54
55 let vocab_size = 50000;
56
57 // Small model for edge deployment
58 let small_config = QuantumLLMConfig::small(vocab_size);
59 println!(" Small Model Configuration:");
60 println!(" - Vocabulary size: {}", small_config.vocab_size);
61 println!(
62 " - Model dimension: {}",
63 small_config.transformer_config.model_dim
64 );
65 println!(
66 " - Number of heads: {}",
67 small_config.transformer_config.num_heads
68 );
69 println!(
70 " - Number of layers: {}",
71 small_config.transformer_config.num_layers
72 );
73 println!(
74 " - Quantum qubits: {}",
75 small_config.transformer_config.num_qubits
76 );
77 println!(" - Memory layers: {}", small_config.quantum_memory_layers);
78
79 let small_model = QuantumLLM::new(small_config)?;
80 println!(
81 " Small model parameters: {:.1}M",
82 small_model.num_parameters() as f64 / 1_000_000.0
83 );
84
85 // Medium model for general use
86 let medium_config = QuantumLLMConfig::medium(vocab_size);
87 println!("\n Medium Model Configuration:");
88 println!(
89 " - Model dimension: {}",
90 medium_config.transformer_config.model_dim
91 );
92 println!(
93 " - Number of layers: {}",
94 medium_config.transformer_config.num_layers
95 );
96 println!(
97 " - Quantum qubits: {}",
98 medium_config.transformer_config.num_qubits
99 );
100 println!(
101 " - Max context length: {}",
102 medium_config.max_context_length
103 );
104
105 let medium_model = QuantumLLM::new(medium_config)?;
106 println!(
107 " Medium model parameters: {:.1}M",
108 medium_model.num_parameters() as f64 / 1_000_000.0
109 );
110
111 // Large model for research and advanced applications
112 let large_config = QuantumLLMConfig::large(vocab_size);
113 println!("\n Large Model Configuration:");
114 println!(
115 " - Model dimension: {}",
116 large_config.transformer_config.model_dim
117 );
118 println!(
119 " - Number of layers: {}",
120 large_config.transformer_config.num_layers
121 );
122 println!(
123 " - Quantum qubits: {}",
124 large_config.transformer_config.num_qubits
125 );
126 println!(
127 " - Max context length: {}",
128 large_config.max_context_length
129 );
130 println!(
131 " - Reasoning steps: {}",
132 large_config.reasoning_config.reasoning_steps
133 );
134
135 let large_model = QuantumLLM::new(large_config)?;
136 println!(
137 " Large model parameters: {:.1}B",
138 large_model.num_parameters() as f64 / 1_000_000_000.0
139 );
140
141 // Compare quantum vs classical parameter efficiency
142 println!("\n Quantum Efficiency Analysis:");
143 let quantum_efficiency =
144 calculate_quantum_efficiency(&small_model, &medium_model, &large_model)?;
145 println!(
146 " - Quantum parameter efficiency: {:.2}x classical equivalent",
147 quantum_efficiency
148 );
149
150 Ok(())
151}
152
153/// Demonstrate quantum memory systems
154fn quantum_memory_demo() -> Result<()> {
155 println!(" Testing quantum memory systems...");
156
157 // Test different memory configurations
158 let memory_configs = vec![
159 ("Basic Associative", QuantumMemoryConfig::default()),
160 ("Enhanced Memory", QuantumMemoryConfig::enhanced()),
161 ("Advanced Holographic", QuantumMemoryConfig::advanced()),
162 ];
163
164 for (name, config) in memory_configs {
165 println!("\n --- {} Memory ---", name);
166
167 let mut memory_system = QuantumMemorySystem::new(config.clone())?;
168 println!(" Memory configuration:");
169 println!(" - Memory size: {}", config.memory_size);
170 println!(" - Associative memory: {}", config.associative_memory);
171 println!(" - Episodic memory: {}", config.episodic_memory);
172 println!(" - Retrieval mechanism: {:?}", config.retrieval_mechanism);
173 println!(" - Quantum compression: {}", config.quantum_compression);
174
175 // Test memory storage and retrieval
176 let test_embeddings = Array3::from_shape_fn((2, 10, 128), |(b, s, d)| {
177 0.1 * (b as f64 + s as f64 * 0.1 + d as f64 * 0.01)
178 });
179
180 // Enhance embeddings with memory
181 let enhanced = memory_system.enhance_embeddings(&test_embeddings)?;
182 println!(" Enhanced embeddings shape: {:?}", enhanced.dim());
183
184 // Measure memory enhancement effect
185 let original_variance = test_embeddings.var(0.0);
186 let enhanced_variance = enhanced.var(0.0);
187 let enhancement_factor = enhanced_variance / original_variance;
188
189 println!(" Memory enhancement factor: {:.3}", enhancement_factor);
190
191 // Test memory update
192 let input_ids = Array2::from_shape_fn((2, 10), |(b, s)| (b * 10 + s) % 1000);
193 memory_system.update_memory(&enhanced, &input_ids)?;
194
195 println!(" Memory updated with new experiences");
196
197 // Test memory retrieval patterns
198 test_memory_patterns(&memory_system, &config)?;
199 }
200
201 Ok(())
202}
203
204/// Demonstrate quantum reasoning capabilities
205fn quantum_reasoning_demo() -> Result<()> {
206 println!(" Testing quantum reasoning modules...");
207
208 let reasoning_configs = vec![
209 ("Basic Logical", QuantumReasoningConfig::default()),
210 ("Enhanced Causal", QuantumReasoningConfig::enhanced()),
211 ("Advanced Analogical", QuantumReasoningConfig::advanced()),
212 ];
213
214 for (name, config) in reasoning_configs {
215 println!("\n --- {} Reasoning ---", name);
216
217 let mut reasoning_module = QuantumReasoningModule::new(config.clone())?;
218
219 println!(" Reasoning capabilities:");
220 println!(" - Logical reasoning: {}", config.logical_reasoning);
221 println!(" - Causal reasoning: {}", config.causal_reasoning);
222 println!(" - Analogical reasoning: {}", config.analogical_reasoning);
223 println!(" - Reasoning steps: {}", config.reasoning_steps);
224 println!(" - Circuit depth: {}", config.circuit_depth);
225 println!(
226 " - Entanglement strength: {:.2}",
227 config.entanglement_strength
228 );
229
230 // Test reasoning on sample hidden states
231 let hidden_states = Array3::from_shape_fn((2, 8, 256), |(b, s, d)| {
232 // Create patterns that require reasoning
233 let logical_pattern = if s % 2 == 0 { 0.8 } else { 0.2 };
234 let causal_pattern = s as f64 * 0.1;
235 let base_value = logical_pattern + causal_pattern;
236
237 base_value + 0.05 * (b as f64 + d as f64 * 0.001)
238 });
239
240 println!(" Input hidden states shape: {:?}", hidden_states.dim());
241
242 // Apply quantum reasoning
243 let reasoned_output = reasoning_module.apply_reasoning(&hidden_states)?;
244 println!(" Reasoned output shape: {:?}", reasoned_output.dim());
245
246 // Analyze reasoning effects
247 let reasoning_enhancement =
248 analyze_reasoning_enhancement(&hidden_states, &reasoned_output)?;
249 println!(" Reasoning enhancement metrics:");
250 println!(
251 " - Pattern amplification: {:.3}",
252 reasoning_enhancement.pattern_amplification
253 );
254 println!(
255 " - Logical consistency: {:.3}",
256 reasoning_enhancement.logical_consistency
257 );
258 println!(
259 " - Causal coherence: {:.3}",
260 reasoning_enhancement.causal_coherence
261 );
262
263 // Test quantum coherence during reasoning
264 let coherence = reasoning_module.measure_coherence()?;
265 println!(" Quantum coherence: {:.3}", coherence);
266
267 // Test token selection enhancement
268 let sample_logits = Array1::from_shape_fn(1000, |i| {
269 0.01 * (i as f64 * 0.1).sin() + 0.001 * fastrand::f64()
270 });
271
272 let enhanced_logits = reasoning_module.enhance_token_selection(&sample_logits)?;
273 let enhancement_effect = (&enhanced_logits - &sample_logits)
274 .mapv(|x| x.abs())
275 .mean()
276 .unwrap_or(0.0);
277 println!(" Token selection enhancement: {:.4}", enhancement_effect);
278 }
279
280 Ok(())
281}
282
283/// Demonstrate quantum-enhanced text generation
284fn text_generation_demo() -> Result<()> {
285 println!(" Testing quantum-enhanced text generation...");
286
287 let config = QuantumLLMConfig::small(10000);
288 let mut model = QuantumLLM::new(config)?;
289
290 // Test different generation configurations
291 let generation_configs = vec![
292 ("Default", GenerationConfig::default()),
293 ("Creative", GenerationConfig::creative()),
294 ("Precise", GenerationConfig::precise()),
295 ];
296
297 let test_prompts = vec![
298 "The quantum computer",
299 "Artificial intelligence will",
300 "In the future, quantum computing",
301 "The relationship between quantum mechanics and consciousness",
302 ];
303
304 for (config_name, gen_config) in generation_configs {
305 println!("\n --- {} Generation ---", config_name);
306 println!(" Configuration:");
307 println!(" - Max length: {}", gen_config.max_length);
308 println!(" - Temperature: {:.1}", gen_config.temperature);
309 println!(" - Top-k: {:?}", gen_config.top_k);
310 println!(" - Top-p: {:?}", gen_config.top_p);
311 println!(
312 " - Quantum reasoning: {}",
313 gen_config.use_quantum_reasoning
314 );
315 println!(" - Memory usage: {}", gen_config.use_memory);
316 println!(" - Chain-of-thought: {}", gen_config.chain_of_thought);
317
318 for (i, prompt) in test_prompts.iter().take(2).enumerate() {
319 println!("\n Prompt {}: \"{}\"", i + 1, prompt);
320
321 let start_time = std::time::Instant::now();
322 let generated = model.generate(prompt, gen_config.clone())?;
323 let generation_time = start_time.elapsed();
324
325 // Display partial generated text (first 100 chars)
326 let display_text = if generated.len() > 100 {
327 format!("{}...", &generated[..100])
328 } else {
329 generated.clone()
330 };
331
332 println!(" Generated: \"{}\"", display_text);
333 println!(" Generation time: {:.2?}", generation_time);
334
335 // Analyze generation quality
336 let quality = analyze_generation_quality(&generated, &gen_config)?;
337 println!(" Quality metrics:");
338 println!(" - Fluency: {:.2}", quality.fluency);
339 println!(" - Coherence: {:.2}", quality.coherence);
340 println!(" - Novelty: {:.2}", quality.novelty);
341 println!(" - Quantum advantage: {:.3}", quality.quantum_advantage);
342 }
343 }
344
345 // Display generation statistics
346 let stats = model.generation_stats();
347 println!("\n Generation Statistics:");
348 println!(" - Total tokens generated: {}", stats.total_tokens);
349 println!(" - Quantum coherence: {:.3}", stats.quantum_coherence);
350 println!(" - Reasoning steps taken: {}", stats.reasoning_steps);
351 println!(" - Memory retrievals: {}", stats.memory_retrievals);
352
353 Ok(())
354}
355
356/// Demonstrate language understanding capabilities
357fn language_understanding_demo() -> Result<()> {
358 println!(" Testing quantum language understanding...");
359
360 let config = QuantumLLMConfig::medium(20000);
361 let mut model = QuantumLLM::new(config)?;
362
363 // Test different understanding tasks
364 let understanding_tasks = vec![
365 ("Reading Comprehension", vec![
366 "The photon exhibits wave-particle duality in quantum mechanics.",
367 "What properties does a photon exhibit according to quantum mechanics?",
368 ]),
369 ("Logical Reasoning", vec![
370 "If all quantum states are normalized, and psi is a quantum state, then what can we conclude?",
371 "Apply logical reasoning to derive the conclusion.",
372 ]),
373 ("Causal Understanding", vec![
374 "When a quantum measurement is performed, the wavefunction collapses.",
375 "What causes the wavefunction to collapse?",
376 ]),
377 ("Analogical Reasoning", vec![
378 "Quantum superposition is like a coin spinning in the air before landing.",
379 "How is quantum entanglement similar to this analogy?",
380 ]),
381 ];
382
383 for (task_name, texts) in understanding_tasks {
384 println!("\n --- {} Task ---", task_name);
385
386 for (i, text) in texts.iter().enumerate() {
387 println!(" Input {}: \"{}\"", i + 1, text);
388
389 // Process text through model
390 let input_ids = Array2::from_shape_vec((1, 10), vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0])?;
391
392 // Enable different reasoning modes based on task
393 let use_reasoning = match task_name {
394 "Logical Reasoning" => true,
395 "Causal Understanding" => true,
396 "Analogical Reasoning" => true,
397 _ => false,
398 };
399
400 let use_memory = true;
401
402 let output = model.forward(&input_ids, None, use_memory, use_reasoning)?;
403 println!(" Model output shape: {:?}", output.dim());
404
405 // Analyze understanding quality
406 let understanding_score = evaluate_understanding_quality(&output, task_name)?;
407 println!(" Understanding score: {:.3}", understanding_score);
408 }
409
410 // Task-specific analysis
411 match task_name {
412 "Reading Comprehension" => {
413 println!(" ✓ Model shows information extraction capabilities");
414 }
415 "Logical Reasoning" => {
416 println!(" ✓ Quantum logical circuits enhance deductive reasoning");
417 }
418 "Causal Understanding" => {
419 println!(" ✓ Causal reasoning networks identify cause-effect relationships");
420 }
421 "Analogical Reasoning" => {
422 println!(" ✓ Quantum analogy engine maps structural similarities");
423 }
424 _ => {}
425 }
426 }
427
428 Ok(())
429}
430
431/// Demonstrate chain-of-thought reasoning
432fn chain_of_thought_demo() -> Result<()> {
433 println!(" Testing quantum chain-of-thought reasoning...");
434
435 let config = QuantumLLMConfig::large(30000);
436 let mut model = QuantumLLM::new(config)?;
437
438 let reasoning_problems = vec![
439 ("Mathematical Problem",
440 "If a quantum computer can factor a 2048-bit number in polynomial time, how does this compare to classical computers?"),
441 ("Physics Problem",
442 "Explain how quantum entanglement enables quantum teleportation step by step."),
443 ("Logic Problem",
444 "If quantum measurements are probabilistic, how can quantum algorithms be deterministic?"),
445 ("Ethics Problem",
446 "What are the implications of quantum computing for cryptography and privacy?"),
447 ];
448
449 for (problem_type, prompt) in reasoning_problems {
450 println!("\n --- {} ---", problem_type);
451 println!(" Problem: \"{}\"", prompt);
452
453 // Enable chain-of-thought generation
454 let cot_config = GenerationConfig {
455 max_length: 200,
456 temperature: 0.8,
457 top_k: Some(40),
458 top_p: Some(0.9),
459 repetition_penalty: 1.1,
460 use_quantum_reasoning: true,
461 use_memory: true,
462 chain_of_thought: true,
463 };
464
465 let start_time = std::time::Instant::now();
466 let reasoning_output = model.generate(prompt, cot_config)?;
467 let reasoning_time = start_time.elapsed();
468
469 // Display reasoning steps (truncated for readability)
470 let display_output = if reasoning_output.len() > 200 {
471 format!("{}...", &reasoning_output[..200])
472 } else {
473 reasoning_output.clone()
474 };
475
476 println!(" Chain-of-thought reasoning:");
477 println!(" \"{}\"", display_output);
478 println!(" Reasoning time: {:.2?}", reasoning_time);
479
480 // Analyze reasoning quality
481 let reasoning_analysis = analyze_cot_quality(&reasoning_output)?;
482 println!(" Reasoning analysis:");
483 println!(" - Logical steps: {}", reasoning_analysis.logical_steps);
484 println!(" - Coherence score: {:.3}", reasoning_analysis.coherence);
485 println!(" - Depth of reasoning: {:.3}", reasoning_analysis.depth);
486 println!(
487 " - Quantum enhancement: {:.3}",
488 reasoning_analysis.quantum_enhancement
489 );
490
491 // Check for quantum reasoning patterns
492 if reasoning_analysis.quantum_enhancement > 0.5 {
493 println!(" ✓ Strong quantum reasoning signature detected");
494 } else if reasoning_analysis.quantum_enhancement > 0.2 {
495 println!(" ~ Moderate quantum reasoning influence");
496 } else {
497 println!(" - Limited quantum reasoning detected");
498 }
499 }
500
501 Ok(())
502}
503
504/// Demonstrate multi-modal quantum language processing
505fn multimodal_demo() -> Result<()> {
506 println!(" Testing multi-modal quantum language processing...");
507
508 let config = QuantumLLMConfig::medium(25000);
509 let mut model = QuantumLLM::new(config)?;
510
511 // Simulate different modalities
512 let multimodal_tasks = vec![
513 (
514 "Text + Quantum Data",
515 "Analyze this quantum measurement sequence",
516 ),
517 (
518 "Text + Mathematical",
519 "Solve this quantum mechanics equation",
520 ),
521 ("Text + Logical", "Apply quantum logic to this proposition"),
522 (
523 "Text + Memory",
524 "Recall information about quantum algorithms",
525 ),
526 ];
527
528 for (modality, task_description) in multimodal_tasks {
529 println!("\n --- {} Processing ---", modality);
530 println!(" Task: \"{}\"", task_description);
531
532 // Create synthetic multi-modal input
533 let text_input =
534 Array2::from_shape_vec((1, 8), vec![100, 200, 300, 400, 500, 600, 700, 800])?;
535
536 // Enable all quantum capabilities for multi-modal processing
537 let output = model.forward(&text_input, None, true, true)?;
538
539 println!(" Multi-modal output shape: {:?}", output.dim());
540
541 // Analyze multi-modal integration
542 let integration_quality = evaluate_multimodal_integration(&output, modality)?;
543 println!(" Integration metrics:");
544 println!(
545 " - Cross-modal coherence: {:.3}",
546 integration_quality.coherence
547 );
548 println!(
549 " - Information fusion: {:.3}",
550 integration_quality.fusion_quality
551 );
552 println!(
553 " - Quantum entanglement: {:.3}",
554 integration_quality.quantum_entanglement
555 );
556
557 // Test specific capabilities based on modality
558 match modality {
559 "Text + Quantum Data" => {
560 let quantum_analysis = analyze_quantum_data_processing(&output)?;
561 println!(
562 " - Quantum state recognition: {:.3}",
563 quantum_analysis.state_recognition
564 );
565 println!(
566 " - Measurement prediction: {:.3}",
567 quantum_analysis.measurement_prediction
568 );
569 }
570 "Text + Mathematical" => {
571 let math_analysis = analyze_mathematical_reasoning(&output)?;
572 println!(
573 " - Equation understanding: {:.3}",
574 math_analysis.equation_understanding
575 );
576 println!(
577 " - Symbol manipulation: {:.3}",
578 math_analysis.symbol_manipulation
579 );
580 }
581 "Text + Logical" => {
582 let logic_analysis = analyze_logical_processing(&output)?;
583 println!(" - Logical validity: {:.3}", logic_analysis.validity);
584 println!(
585 " - Inference quality: {:.3}",
586 logic_analysis.inference_quality
587 );
588 }
589 "Text + Memory" => {
590 let memory_analysis = analyze_memory_retrieval(&output)?;
591 println!(" - Memory accuracy: {:.3}", memory_analysis.accuracy);
592 println!(
593 " - Retrieval efficiency: {:.3}",
594 memory_analysis.efficiency
595 );
596 }
597 _ => {}
598 }
599 }
600
601 Ok(())
602}
603
604/// Demonstrate performance analysis and quantum advantage
605fn performance_analysis_demo() -> Result<()> {
606 println!(" Analyzing performance and quantum advantage...");
607
608 // Create models of different scales
609 let small_config = QuantumLLMConfig::small(10000);
610 let medium_config = QuantumLLMConfig::medium(20000);
611 let large_config = QuantumLLMConfig::large(50000);
612
613 let small_model = QuantumLLM::new(small_config)?;
614 let medium_model = QuantumLLM::new(medium_config)?;
615 let large_model = QuantumLLM::new(large_config)?;
616
617 let models = vec![
618 ("Small", &small_model),
619 ("Medium", &medium_model),
620 ("Large", &large_model),
621 ];
622
623 println!("\n Model Comparison:");
624
625 for (name, model) in &models {
626 let config = model.config();
627 let params = model.num_parameters();
628
629 println!(" {} Model:", name);
630 println!(" - Parameters: {:.1}M", params as f64 / 1_000_000.0);
631 println!(
632 " - Model dimension: {}",
633 config.transformer_config.model_dim
634 );
635 println!(
636 " - Quantum qubits: {}",
637 config.transformer_config.num_qubits
638 );
639 println!(" - Memory size: {}", config.memory_config.memory_size);
640 println!(
641 " - Reasoning steps: {}",
642 config.reasoning_config.reasoning_steps
643 );
644
645 // Estimate quantum advantage
646 let quantum_advantage = estimate_quantum_advantage(model)?;
647 println!(" - Quantum advantage: {:.2}x", quantum_advantage.speedup);
648 println!(
649 " - Memory efficiency: {:.2}x",
650 quantum_advantage.memory_efficiency
651 );
652 println!(
653 " - Reasoning enhancement: {:.2}x",
654 quantum_advantage.reasoning_enhancement
655 );
656 }
657
658 // Performance benchmarks
659 println!("\n Performance Benchmarks:");
660
661 let benchmark_tasks: Vec<(&str, fn(&QuantumLLM) -> Result<PerformanceMetrics>)> = vec![
662 ("Text Generation", measure_generation_performance),
663 ("Language Understanding", measure_understanding_performance),
664 ("Reasoning Tasks", measure_reasoning_performance),
665 ("Memory Operations", measure_memory_performance),
666 ];
667
668 for (task_name, benchmark_fn) in benchmark_tasks {
669 println!("\n {} Benchmark:", task_name);
670
671 for (model_name, model) in &models {
672 let performance = benchmark_fn(model)?;
673 println!(
674 " {} Model: {:.2} ops/sec, {:.1} MB memory",
675 model_name, performance.operations_per_sec, performance.memory_usage_mb
676 );
677 }
678 }
679
680 // Quantum scaling analysis
681 println!("\n Quantum Scaling Analysis:");
682 let scaling_analysis = analyze_quantum_scaling(&models)?;
683 println!(
684 " - Parameter scaling: {:.2} (vs {:.2} classical)",
685 scaling_analysis.quantum_scaling, scaling_analysis.classical_scaling
686 );
687 println!(
688 " - Performance scaling: {:.2}",
689 scaling_analysis.performance_scaling
690 );
691 println!(
692 " - Quantum efficiency: {:.1}%",
693 scaling_analysis.efficiency * 100.0
694 );
695
696 // Future projections
697 println!("\n Future Projections:");
698 println!(
699 " - 100B parameter QLLM estimated efficiency: {:.2}x classical",
700 project_future_efficiency(100_000_000_000)
701 );
702 println!(
703 " - Quantum coherence preservation: {:.1}%",
704 project_coherence_preservation() * 100.0
705 );
706 println!(
707 " - Reasoning capability enhancement: {:.2}x",
708 project_reasoning_enhancement()
709 );
710
711 Ok(())
712}Sourcepub fn large(vocab_size: usize) -> Self
pub fn large(vocab_size: usize) -> Self
Create large model configuration
Examples found in repository?
examples/quantum_llm.rs (line 112)
52fn model_configurations_demo() -> Result<()> {
53 println!(" Creating quantum LLM configurations...");
54
55 let vocab_size = 50000;
56
57 // Small model for edge deployment
58 let small_config = QuantumLLMConfig::small(vocab_size);
59 println!(" Small Model Configuration:");
60 println!(" - Vocabulary size: {}", small_config.vocab_size);
61 println!(
62 " - Model dimension: {}",
63 small_config.transformer_config.model_dim
64 );
65 println!(
66 " - Number of heads: {}",
67 small_config.transformer_config.num_heads
68 );
69 println!(
70 " - Number of layers: {}",
71 small_config.transformer_config.num_layers
72 );
73 println!(
74 " - Quantum qubits: {}",
75 small_config.transformer_config.num_qubits
76 );
77 println!(" - Memory layers: {}", small_config.quantum_memory_layers);
78
79 let small_model = QuantumLLM::new(small_config)?;
80 println!(
81 " Small model parameters: {:.1}M",
82 small_model.num_parameters() as f64 / 1_000_000.0
83 );
84
85 // Medium model for general use
86 let medium_config = QuantumLLMConfig::medium(vocab_size);
87 println!("\n Medium Model Configuration:");
88 println!(
89 " - Model dimension: {}",
90 medium_config.transformer_config.model_dim
91 );
92 println!(
93 " - Number of layers: {}",
94 medium_config.transformer_config.num_layers
95 );
96 println!(
97 " - Quantum qubits: {}",
98 medium_config.transformer_config.num_qubits
99 );
100 println!(
101 " - Max context length: {}",
102 medium_config.max_context_length
103 );
104
105 let medium_model = QuantumLLM::new(medium_config)?;
106 println!(
107 " Medium model parameters: {:.1}M",
108 medium_model.num_parameters() as f64 / 1_000_000.0
109 );
110
111 // Large model for research and advanced applications
112 let large_config = QuantumLLMConfig::large(vocab_size);
113 println!("\n Large Model Configuration:");
114 println!(
115 " - Model dimension: {}",
116 large_config.transformer_config.model_dim
117 );
118 println!(
119 " - Number of layers: {}",
120 large_config.transformer_config.num_layers
121 );
122 println!(
123 " - Quantum qubits: {}",
124 large_config.transformer_config.num_qubits
125 );
126 println!(
127 " - Max context length: {}",
128 large_config.max_context_length
129 );
130 println!(
131 " - Reasoning steps: {}",
132 large_config.reasoning_config.reasoning_steps
133 );
134
135 let large_model = QuantumLLM::new(large_config)?;
136 println!(
137 " Large model parameters: {:.1}B",
138 large_model.num_parameters() as f64 / 1_000_000_000.0
139 );
140
141 // Compare quantum vs classical parameter efficiency
142 println!("\n Quantum Efficiency Analysis:");
143 let quantum_efficiency =
144 calculate_quantum_efficiency(&small_model, &medium_model, &large_model)?;
145 println!(
146 " - Quantum parameter efficiency: {:.2}x classical equivalent",
147 quantum_efficiency
148 );
149
150 Ok(())
151}
152
153/// Demonstrate quantum memory systems
154fn quantum_memory_demo() -> Result<()> {
155 println!(" Testing quantum memory systems...");
156
157 // Test different memory configurations
158 let memory_configs = vec![
159 ("Basic Associative", QuantumMemoryConfig::default()),
160 ("Enhanced Memory", QuantumMemoryConfig::enhanced()),
161 ("Advanced Holographic", QuantumMemoryConfig::advanced()),
162 ];
163
164 for (name, config) in memory_configs {
165 println!("\n --- {} Memory ---", name);
166
167 let mut memory_system = QuantumMemorySystem::new(config.clone())?;
168 println!(" Memory configuration:");
169 println!(" - Memory size: {}", config.memory_size);
170 println!(" - Associative memory: {}", config.associative_memory);
171 println!(" - Episodic memory: {}", config.episodic_memory);
172 println!(" - Retrieval mechanism: {:?}", config.retrieval_mechanism);
173 println!(" - Quantum compression: {}", config.quantum_compression);
174
175 // Test memory storage and retrieval
176 let test_embeddings = Array3::from_shape_fn((2, 10, 128), |(b, s, d)| {
177 0.1 * (b as f64 + s as f64 * 0.1 + d as f64 * 0.01)
178 });
179
180 // Enhance embeddings with memory
181 let enhanced = memory_system.enhance_embeddings(&test_embeddings)?;
182 println!(" Enhanced embeddings shape: {:?}", enhanced.dim());
183
184 // Measure memory enhancement effect
185 let original_variance = test_embeddings.var(0.0);
186 let enhanced_variance = enhanced.var(0.0);
187 let enhancement_factor = enhanced_variance / original_variance;
188
189 println!(" Memory enhancement factor: {:.3}", enhancement_factor);
190
191 // Test memory update
192 let input_ids = Array2::from_shape_fn((2, 10), |(b, s)| (b * 10 + s) % 1000);
193 memory_system.update_memory(&enhanced, &input_ids)?;
194
195 println!(" Memory updated with new experiences");
196
197 // Test memory retrieval patterns
198 test_memory_patterns(&memory_system, &config)?;
199 }
200
201 Ok(())
202}
203
204/// Demonstrate quantum reasoning capabilities
205fn quantum_reasoning_demo() -> Result<()> {
206 println!(" Testing quantum reasoning modules...");
207
208 let reasoning_configs = vec![
209 ("Basic Logical", QuantumReasoningConfig::default()),
210 ("Enhanced Causal", QuantumReasoningConfig::enhanced()),
211 ("Advanced Analogical", QuantumReasoningConfig::advanced()),
212 ];
213
214 for (name, config) in reasoning_configs {
215 println!("\n --- {} Reasoning ---", name);
216
217 let mut reasoning_module = QuantumReasoningModule::new(config.clone())?;
218
219 println!(" Reasoning capabilities:");
220 println!(" - Logical reasoning: {}", config.logical_reasoning);
221 println!(" - Causal reasoning: {}", config.causal_reasoning);
222 println!(" - Analogical reasoning: {}", config.analogical_reasoning);
223 println!(" - Reasoning steps: {}", config.reasoning_steps);
224 println!(" - Circuit depth: {}", config.circuit_depth);
225 println!(
226 " - Entanglement strength: {:.2}",
227 config.entanglement_strength
228 );
229
230 // Test reasoning on sample hidden states
231 let hidden_states = Array3::from_shape_fn((2, 8, 256), |(b, s, d)| {
232 // Create patterns that require reasoning
233 let logical_pattern = if s % 2 == 0 { 0.8 } else { 0.2 };
234 let causal_pattern = s as f64 * 0.1;
235 let base_value = logical_pattern + causal_pattern;
236
237 base_value + 0.05 * (b as f64 + d as f64 * 0.001)
238 });
239
240 println!(" Input hidden states shape: {:?}", hidden_states.dim());
241
242 // Apply quantum reasoning
243 let reasoned_output = reasoning_module.apply_reasoning(&hidden_states)?;
244 println!(" Reasoned output shape: {:?}", reasoned_output.dim());
245
246 // Analyze reasoning effects
247 let reasoning_enhancement =
248 analyze_reasoning_enhancement(&hidden_states, &reasoned_output)?;
249 println!(" Reasoning enhancement metrics:");
250 println!(
251 " - Pattern amplification: {:.3}",
252 reasoning_enhancement.pattern_amplification
253 );
254 println!(
255 " - Logical consistency: {:.3}",
256 reasoning_enhancement.logical_consistency
257 );
258 println!(
259 " - Causal coherence: {:.3}",
260 reasoning_enhancement.causal_coherence
261 );
262
263 // Test quantum coherence during reasoning
264 let coherence = reasoning_module.measure_coherence()?;
265 println!(" Quantum coherence: {:.3}", coherence);
266
267 // Test token selection enhancement
268 let sample_logits = Array1::from_shape_fn(1000, |i| {
269 0.01 * (i as f64 * 0.1).sin() + 0.001 * fastrand::f64()
270 });
271
272 let enhanced_logits = reasoning_module.enhance_token_selection(&sample_logits)?;
273 let enhancement_effect = (&enhanced_logits - &sample_logits)
274 .mapv(|x| x.abs())
275 .mean()
276 .unwrap_or(0.0);
277 println!(" Token selection enhancement: {:.4}", enhancement_effect);
278 }
279
280 Ok(())
281}
282
283/// Demonstrate quantum-enhanced text generation
284fn text_generation_demo() -> Result<()> {
285 println!(" Testing quantum-enhanced text generation...");
286
287 let config = QuantumLLMConfig::small(10000);
288 let mut model = QuantumLLM::new(config)?;
289
290 // Test different generation configurations
291 let generation_configs = vec![
292 ("Default", GenerationConfig::default()),
293 ("Creative", GenerationConfig::creative()),
294 ("Precise", GenerationConfig::precise()),
295 ];
296
297 let test_prompts = vec![
298 "The quantum computer",
299 "Artificial intelligence will",
300 "In the future, quantum computing",
301 "The relationship between quantum mechanics and consciousness",
302 ];
303
304 for (config_name, gen_config) in generation_configs {
305 println!("\n --- {} Generation ---", config_name);
306 println!(" Configuration:");
307 println!(" - Max length: {}", gen_config.max_length);
308 println!(" - Temperature: {:.1}", gen_config.temperature);
309 println!(" - Top-k: {:?}", gen_config.top_k);
310 println!(" - Top-p: {:?}", gen_config.top_p);
311 println!(
312 " - Quantum reasoning: {}",
313 gen_config.use_quantum_reasoning
314 );
315 println!(" - Memory usage: {}", gen_config.use_memory);
316 println!(" - Chain-of-thought: {}", gen_config.chain_of_thought);
317
318 for (i, prompt) in test_prompts.iter().take(2).enumerate() {
319 println!("\n Prompt {}: \"{}\"", i + 1, prompt);
320
321 let start_time = std::time::Instant::now();
322 let generated = model.generate(prompt, gen_config.clone())?;
323 let generation_time = start_time.elapsed();
324
325 // Display partial generated text (first 100 chars)
326 let display_text = if generated.len() > 100 {
327 format!("{}...", &generated[..100])
328 } else {
329 generated.clone()
330 };
331
332 println!(" Generated: \"{}\"", display_text);
333 println!(" Generation time: {:.2?}", generation_time);
334
335 // Analyze generation quality
336 let quality = analyze_generation_quality(&generated, &gen_config)?;
337 println!(" Quality metrics:");
338 println!(" - Fluency: {:.2}", quality.fluency);
339 println!(" - Coherence: {:.2}", quality.coherence);
340 println!(" - Novelty: {:.2}", quality.novelty);
341 println!(" - Quantum advantage: {:.3}", quality.quantum_advantage);
342 }
343 }
344
345 // Display generation statistics
346 let stats = model.generation_stats();
347 println!("\n Generation Statistics:");
348 println!(" - Total tokens generated: {}", stats.total_tokens);
349 println!(" - Quantum coherence: {:.3}", stats.quantum_coherence);
350 println!(" - Reasoning steps taken: {}", stats.reasoning_steps);
351 println!(" - Memory retrievals: {}", stats.memory_retrievals);
352
353 Ok(())
354}
355
356/// Demonstrate language understanding capabilities
357fn language_understanding_demo() -> Result<()> {
358 println!(" Testing quantum language understanding...");
359
360 let config = QuantumLLMConfig::medium(20000);
361 let mut model = QuantumLLM::new(config)?;
362
363 // Test different understanding tasks
364 let understanding_tasks = vec![
365 ("Reading Comprehension", vec![
366 "The photon exhibits wave-particle duality in quantum mechanics.",
367 "What properties does a photon exhibit according to quantum mechanics?",
368 ]),
369 ("Logical Reasoning", vec![
370 "If all quantum states are normalized, and psi is a quantum state, then what can we conclude?",
371 "Apply logical reasoning to derive the conclusion.",
372 ]),
373 ("Causal Understanding", vec![
374 "When a quantum measurement is performed, the wavefunction collapses.",
375 "What causes the wavefunction to collapse?",
376 ]),
377 ("Analogical Reasoning", vec![
378 "Quantum superposition is like a coin spinning in the air before landing.",
379 "How is quantum entanglement similar to this analogy?",
380 ]),
381 ];
382
383 for (task_name, texts) in understanding_tasks {
384 println!("\n --- {} Task ---", task_name);
385
386 for (i, text) in texts.iter().enumerate() {
387 println!(" Input {}: \"{}\"", i + 1, text);
388
389 // Process text through model
390 let input_ids = Array2::from_shape_vec((1, 10), vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 0])?;
391
392 // Enable different reasoning modes based on task
393 let use_reasoning = match task_name {
394 "Logical Reasoning" => true,
395 "Causal Understanding" => true,
396 "Analogical Reasoning" => true,
397 _ => false,
398 };
399
400 let use_memory = true;
401
402 let output = model.forward(&input_ids, None, use_memory, use_reasoning)?;
403 println!(" Model output shape: {:?}", output.dim());
404
405 // Analyze understanding quality
406 let understanding_score = evaluate_understanding_quality(&output, task_name)?;
407 println!(" Understanding score: {:.3}", understanding_score);
408 }
409
410 // Task-specific analysis
411 match task_name {
412 "Reading Comprehension" => {
413 println!(" ✓ Model shows information extraction capabilities");
414 }
415 "Logical Reasoning" => {
416 println!(" ✓ Quantum logical circuits enhance deductive reasoning");
417 }
418 "Causal Understanding" => {
419 println!(" ✓ Causal reasoning networks identify cause-effect relationships");
420 }
421 "Analogical Reasoning" => {
422 println!(" ✓ Quantum analogy engine maps structural similarities");
423 }
424 _ => {}
425 }
426 }
427
428 Ok(())
429}
430
431/// Demonstrate chain-of-thought reasoning
432fn chain_of_thought_demo() -> Result<()> {
433 println!(" Testing quantum chain-of-thought reasoning...");
434
435 let config = QuantumLLMConfig::large(30000);
436 let mut model = QuantumLLM::new(config)?;
437
438 let reasoning_problems = vec![
439 ("Mathematical Problem",
440 "If a quantum computer can factor a 2048-bit number in polynomial time, how does this compare to classical computers?"),
441 ("Physics Problem",
442 "Explain how quantum entanglement enables quantum teleportation step by step."),
443 ("Logic Problem",
444 "If quantum measurements are probabilistic, how can quantum algorithms be deterministic?"),
445 ("Ethics Problem",
446 "What are the implications of quantum computing for cryptography and privacy?"),
447 ];
448
449 for (problem_type, prompt) in reasoning_problems {
450 println!("\n --- {} ---", problem_type);
451 println!(" Problem: \"{}\"", prompt);
452
453 // Enable chain-of-thought generation
454 let cot_config = GenerationConfig {
455 max_length: 200,
456 temperature: 0.8,
457 top_k: Some(40),
458 top_p: Some(0.9),
459 repetition_penalty: 1.1,
460 use_quantum_reasoning: true,
461 use_memory: true,
462 chain_of_thought: true,
463 };
464
465 let start_time = std::time::Instant::now();
466 let reasoning_output = model.generate(prompt, cot_config)?;
467 let reasoning_time = start_time.elapsed();
468
469 // Display reasoning steps (truncated for readability)
470 let display_output = if reasoning_output.len() > 200 {
471 format!("{}...", &reasoning_output[..200])
472 } else {
473 reasoning_output.clone()
474 };
475
476 println!(" Chain-of-thought reasoning:");
477 println!(" \"{}\"", display_output);
478 println!(" Reasoning time: {:.2?}", reasoning_time);
479
480 // Analyze reasoning quality
481 let reasoning_analysis = analyze_cot_quality(&reasoning_output)?;
482 println!(" Reasoning analysis:");
483 println!(" - Logical steps: {}", reasoning_analysis.logical_steps);
484 println!(" - Coherence score: {:.3}", reasoning_analysis.coherence);
485 println!(" - Depth of reasoning: {:.3}", reasoning_analysis.depth);
486 println!(
487 " - Quantum enhancement: {:.3}",
488 reasoning_analysis.quantum_enhancement
489 );
490
491 // Check for quantum reasoning patterns
492 if reasoning_analysis.quantum_enhancement > 0.5 {
493 println!(" ✓ Strong quantum reasoning signature detected");
494 } else if reasoning_analysis.quantum_enhancement > 0.2 {
495 println!(" ~ Moderate quantum reasoning influence");
496 } else {
497 println!(" - Limited quantum reasoning detected");
498 }
499 }
500
501 Ok(())
502}
503
504/// Demonstrate multi-modal quantum language processing
505fn multimodal_demo() -> Result<()> {
506 println!(" Testing multi-modal quantum language processing...");
507
508 let config = QuantumLLMConfig::medium(25000);
509 let mut model = QuantumLLM::new(config)?;
510
511 // Simulate different modalities
512 let multimodal_tasks = vec![
513 (
514 "Text + Quantum Data",
515 "Analyze this quantum measurement sequence",
516 ),
517 (
518 "Text + Mathematical",
519 "Solve this quantum mechanics equation",
520 ),
521 ("Text + Logical", "Apply quantum logic to this proposition"),
522 (
523 "Text + Memory",
524 "Recall information about quantum algorithms",
525 ),
526 ];
527
528 for (modality, task_description) in multimodal_tasks {
529 println!("\n --- {} Processing ---", modality);
530 println!(" Task: \"{}\"", task_description);
531
532 // Create synthetic multi-modal input
533 let text_input =
534 Array2::from_shape_vec((1, 8), vec![100, 200, 300, 400, 500, 600, 700, 800])?;
535
536 // Enable all quantum capabilities for multi-modal processing
537 let output = model.forward(&text_input, None, true, true)?;
538
539 println!(" Multi-modal output shape: {:?}", output.dim());
540
541 // Analyze multi-modal integration
542 let integration_quality = evaluate_multimodal_integration(&output, modality)?;
543 println!(" Integration metrics:");
544 println!(
545 " - Cross-modal coherence: {:.3}",
546 integration_quality.coherence
547 );
548 println!(
549 " - Information fusion: {:.3}",
550 integration_quality.fusion_quality
551 );
552 println!(
553 " - Quantum entanglement: {:.3}",
554 integration_quality.quantum_entanglement
555 );
556
557 // Test specific capabilities based on modality
558 match modality {
559 "Text + Quantum Data" => {
560 let quantum_analysis = analyze_quantum_data_processing(&output)?;
561 println!(
562 " - Quantum state recognition: {:.3}",
563 quantum_analysis.state_recognition
564 );
565 println!(
566 " - Measurement prediction: {:.3}",
567 quantum_analysis.measurement_prediction
568 );
569 }
570 "Text + Mathematical" => {
571 let math_analysis = analyze_mathematical_reasoning(&output)?;
572 println!(
573 " - Equation understanding: {:.3}",
574 math_analysis.equation_understanding
575 );
576 println!(
577 " - Symbol manipulation: {:.3}",
578 math_analysis.symbol_manipulation
579 );
580 }
581 "Text + Logical" => {
582 let logic_analysis = analyze_logical_processing(&output)?;
583 println!(" - Logical validity: {:.3}", logic_analysis.validity);
584 println!(
585 " - Inference quality: {:.3}",
586 logic_analysis.inference_quality
587 );
588 }
589 "Text + Memory" => {
590 let memory_analysis = analyze_memory_retrieval(&output)?;
591 println!(" - Memory accuracy: {:.3}", memory_analysis.accuracy);
592 println!(
593 " - Retrieval efficiency: {:.3}",
594 memory_analysis.efficiency
595 );
596 }
597 _ => {}
598 }
599 }
600
601 Ok(())
602}
603
604/// Demonstrate performance analysis and quantum advantage
605fn performance_analysis_demo() -> Result<()> {
606 println!(" Analyzing performance and quantum advantage...");
607
608 // Create models of different scales
609 let small_config = QuantumLLMConfig::small(10000);
610 let medium_config = QuantumLLMConfig::medium(20000);
611 let large_config = QuantumLLMConfig::large(50000);
612
613 let small_model = QuantumLLM::new(small_config)?;
614 let medium_model = QuantumLLM::new(medium_config)?;
615 let large_model = QuantumLLM::new(large_config)?;
616
617 let models = vec![
618 ("Small", &small_model),
619 ("Medium", &medium_model),
620 ("Large", &large_model),
621 ];
622
623 println!("\n Model Comparison:");
624
625 for (name, model) in &models {
626 let config = model.config();
627 let params = model.num_parameters();
628
629 println!(" {} Model:", name);
630 println!(" - Parameters: {:.1}M", params as f64 / 1_000_000.0);
631 println!(
632 " - Model dimension: {}",
633 config.transformer_config.model_dim
634 );
635 println!(
636 " - Quantum qubits: {}",
637 config.transformer_config.num_qubits
638 );
639 println!(" - Memory size: {}", config.memory_config.memory_size);
640 println!(
641 " - Reasoning steps: {}",
642 config.reasoning_config.reasoning_steps
643 );
644
645 // Estimate quantum advantage
646 let quantum_advantage = estimate_quantum_advantage(model)?;
647 println!(" - Quantum advantage: {:.2}x", quantum_advantage.speedup);
648 println!(
649 " - Memory efficiency: {:.2}x",
650 quantum_advantage.memory_efficiency
651 );
652 println!(
653 " - Reasoning enhancement: {:.2}x",
654 quantum_advantage.reasoning_enhancement
655 );
656 }
657
658 // Performance benchmarks
659 println!("\n Performance Benchmarks:");
660
661 let benchmark_tasks: Vec<(&str, fn(&QuantumLLM) -> Result<PerformanceMetrics>)> = vec![
662 ("Text Generation", measure_generation_performance),
663 ("Language Understanding", measure_understanding_performance),
664 ("Reasoning Tasks", measure_reasoning_performance),
665 ("Memory Operations", measure_memory_performance),
666 ];
667
668 for (task_name, benchmark_fn) in benchmark_tasks {
669 println!("\n {} Benchmark:", task_name);
670
671 for (model_name, model) in &models {
672 let performance = benchmark_fn(model)?;
673 println!(
674 " {} Model: {:.2} ops/sec, {:.1} MB memory",
675 model_name, performance.operations_per_sec, performance.memory_usage_mb
676 );
677 }
678 }
679
680 // Quantum scaling analysis
681 println!("\n Quantum Scaling Analysis:");
682 let scaling_analysis = analyze_quantum_scaling(&models)?;
683 println!(
684 " - Parameter scaling: {:.2} (vs {:.2} classical)",
685 scaling_analysis.quantum_scaling, scaling_analysis.classical_scaling
686 );
687 println!(
688 " - Performance scaling: {:.2}",
689 scaling_analysis.performance_scaling
690 );
691 println!(
692 " - Quantum efficiency: {:.1}%",
693 scaling_analysis.efficiency * 100.0
694 );
695
696 // Future projections
697 println!("\n Future Projections:");
698 println!(
699 " - 100B parameter QLLM estimated efficiency: {:.2}x classical",
700 project_future_efficiency(100_000_000_000)
701 );
702 println!(
703 " - Quantum coherence preservation: {:.1}%",
704 project_coherence_preservation() * 100.0
705 );
706 println!(
707 " - Reasoning capability enhancement: {:.2}x",
708 project_reasoning_enhancement()
709 );
710
711 Ok(())
712}Trait Implementations§
Source§impl Clone for QuantumLLMConfig
impl Clone for QuantumLLMConfig
Source§fn clone(&self) -> QuantumLLMConfig
fn clone(&self) -> QuantumLLMConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for QuantumLLMConfig
impl RefUnwindSafe for QuantumLLMConfig
impl Send for QuantumLLMConfig
impl Sync for QuantumLLMConfig
impl Unpin for QuantumLLMConfig
impl UnwindSafe for QuantumLLMConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.